Kotlin:嵌套类无法访问外部类变量

Ala*_*anH 1 java junit class inner-classes kotlin

我是 Kotlin 的新手,对 Java 的经验也很少,所以请耐心等待。根据我已经能够研究的内容(例如,此处),似乎应该mockFoo可以从外部类访问,但 IntelliJ 给了我一个Unresolved Reference错误。

@ExtendWith(MockKExtension::class)
class GetBazTest {
    @MockK
    private lateinit var mockFoo: FooClient

    @MockK
    private lateinit var mockBar: BarClient

    private lateinit var getBaz: GetBaz

    @BeforeEach
    fun setup() {
        getBaz = GetBaz(
            mockFoo,
            mockBar,
        )
    }

    @Test
    fun `it should do a thing`() {
        // some code to create expectedResult

        coEvery {
            mockFoo.getSomething(any())
        } answers {
            expectedResult
        }
    }


    @Nested
    @DisplayName("Tests for Xyz")
    class XyzTest {
        @Test
        fun `it should do a different thing`() {
            // some code to create expectedResult

            coEvery {
                mockFoo.getAThing(any()) // mockFoo gives Unresolved Reference error
            } answers {
                expectedResult
            }
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

我需要setUp mockFoo在内部类中再次这样做似乎是不对的。如何访问外部变量?

Nik*_*nko 6

只需将 XyzTest 设为一个inner类即可授予他访问外部类成员的权限

@Nested
@DisplayName("Tests for Xyz")
inner class XyzTest { ...
Run Code Online (Sandbox Code Playgroud)