小编Roh*_*kar的帖子

Koin-如何为咖啡测试提供模拟ViewModel?

我们如何将模拟的viewModel注入到Activity中以进行浓缩咖啡测试?使用declareMock我在Test类中获取模拟对象,但是Activity接收常规的viewModel对象。

@RunWith(AndroidJUnit4::class)
class SomeActivityTest : KoinTest {
    @Rule
    @JvmField
    val rule = ActivityTestRule(SomeActivity::class.java, true, true)
    val viewModel: MyViewModel by inject()

    @Before
    fun setup() {
        declareMock<MyViewModel>(isFactory = true, binds = listOf(ViewModel::class))
    }

    @After
    fun cleanUp() {
        stopKoin()
    }

    @Test
    fun shouldHaveTextViewVisible() {
        `when`(viewModel.sayHello())
                .thenReturn("hello view-model")
        onView(withId(R.id.tv_homescreen_message))
                .check(matches(isDisplayed()))
        onView(withId(R.id.tv_homescreen_message))
                .check(matches(withText("hello view-model")))
    }
}
Run Code Online (Sandbox Code Playgroud)

android kotlin android-espresso android-viewmodel koin

3
推荐指数
1
解决办法
1329
查看次数