首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MockK协同响应无法回答

MockK协同响应无法回答
EN

Stack Overflow用户
提问于 2020-07-19 17:27:37
回答 1查看 169关注 0票数 1

试图在涉及协同线的情况下更深入地使用MockK。我有个测试:

代码语言:javascript
复制
class UserDataUseCaseTest {

    @MockK
    val dataFetcherService: DataFetcherService = mockk()

    @MockK
    val userData: UserData = mockk()

    @ExperimentalCoroutinesApi
    @Test
    fun `fetching salt populates user data salt value`() = runBlockingTest {
        MockKAnnotations.init(this)
        val userDataUseCase = UserDataUseCase(mockk(), mockk(), mockk())
        every { userData.user_name } returns FAKE_USER
        coEvery { dataFetcherService.getSaltForUser(FAKE_USER) } returns SALT_RESPONSE
        userDataUseCase.getSaltForUser(userData)
        assertEquals(SALT, userData.salt)
    }

    companion object {
        private const val FAKE_USER = "fake_user"
        private const val SALT = "salt"
        private val SALT_RESPONSE = SaltResponse(
            result = "",
            title = "",
            message = "",
            salt = SALT,
            auth_code = "auth_code",
            userMustChangePassword = false
        )
    }
}

如果出现以下错误,这将失败:

DataFetcherService(#4).getSaltForUser(fake_user,

io.mockk.MockKException:找不到答案:io.mockk.MockKException {})

我试图测试的方法如下所示:

代码语言:javascript
复制
@VisibleForTesting
suspend fun getSaltForUser(userData: UserData) {
    val saltResponse = dataFetcherService.getSaltForUser(userData.user_name)

    with (userData) {

        salt = if (saltResponse.salt.isEmpty())
            KeyChainWrapper().generateRandomString(KeyChainWrapper.SALT_LEN)
        else saltResponse.salt

        authCode = saltResponse.auth_code
        userMustChangePassword = saltResponse.userMustChangePassword
    }
}

为什么我没有得到getSaltForUser()电话的答案?谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2020-07-30 10:47:17

从该示例代码的外观来看,所测试的类没有使用与测试中定义的相同的模拟:

代码语言:javascript
复制
val userDataUseCase = UserDataUseCase(mockk(), mockk(), mockk())

应该是这样的

代码语言:javascript
复制
val userDataUseCase = UserDataUseCase(dataFetcherService, mockk(), mockk())

取决于DataFetcherService应该是哪个参数

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62983519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档