Android:使用协同程序测试视图模型

时间:2019-08-05 22:55:13

标签: android unit-testing coroutine android-viewmodel

我有这种测试方法

obj.rotateX(rads)

自从我致电private var testDispatcher = TestCoroutineDispatcher() @Test fun test__success() { viewModel = MyActivateViewModel( "LG_NAME", "EXH_NAME", "_CODE", "C_CODE", controller) every { controller.activate(any(), any()) } returns true testDispatcher .runBlockingTest { viewModel.onOkButtonClicked() Truth.assertThat(viewModel.activated.value).isEqualTo(true) } } fun onOkButtonClicked() { viewModelScope.launch { val status = activateTask() if (status == 0) { activated.value = true } else { activationFailed.value = status } } } private suspend fun activateTask(): Int { return withContext(Dispatchers.IO) { var status = 0 try { controller.activate(code, code) } catch (e: LoginException) { status = e.reason } status } } 我希望这可以完成。但是这些行下面的断言失败了。我看到的是在执行断言行之前协程尚未完成。如果我在断言之前添加一个延迟,它将按预期工作。

我的实现方式有什么问题? 正确的方法是什么

0 个答案:

没有答案