Mockk unmockk() 方法不会破坏模拟

问题描述

我正在运行以下测试代码,但以某种奇怪的方式我不明白它没有清除两个测试之间的模拟。

我在第二次测试中得到 environmentAsrequired 作为 repo.getClusterEnvironment(environmentName) 的返回,而不是抛出 noresultException() 这会导致第二次测试失败,因为我断言的异常没有被抛出.

我已经验证过,并且在测试之间调用了用@BeforeEach 注释的方法

有人知道吗?

class ConfigUtilsTest {

@BeforeEach
fun start() {
    MockKAnnotations.init(this)
    val testModule = module() {
        single { mockk<Repository>() }
        single { mockk<AdminClient>() }
    }

    startKoin { modules(testModule) }
}

@AfterEach
fun stop() {
    stopKoin()
    unmockkAll()

}

@Test
fun `fetchOrCreateCluster creates the cluster if it is not on db but all required attributes are`() {

    val environmentName = "environmentForCluster"
    val clusterName = "NameForCluster"
    val clusterURL = "UrlForCluster"

    val environmentAsrequired = ClusterEnvironment(0,environmentName)
    val expectedResult = Cluster(
        clusterURL,clusterName,environmentAsrequired,)

    val repo = get(Repository::class.java)
    every { repo.getCluster(clusterURL) } throws noresultException()
    every { repo.getClusterEnvironment(environmentName) } returns environmentAsrequired

    fetchOrCreateCluster(
        clusterName,environmentName,clusterURL
    ) shouldBe expectedResult
}

@Test
fun `fetchOrCreateCluster throws InvalidConfigException creating cluster if required attribute (environment) is not on DB`() {

    val clusterName = "NameForCluster"
    val clusterURL = "UrlForCluster"

    val repo = get(Repository::class.java)
    every { repo.getCluster(clusterURL) } throws noresultException()
    every { repo.getClusterEnvironment(environmentName) } throws noresultException()

    shouldThrow<InvalidConfigException> {
        fetchOrCreateCluster(
            clusterName,clusterURL
        )
    }
}

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)