Dagger 2 Mocking Content Resolver类

问题描述 投票:0回答:1

我有一个ContentResolver,使用fragment注入我的Dagger2。我想在浓咖啡中嘲笑这个,所以在我的测试中我会这样做:

1:在类中模拟它作为外部变量

@Mock val mockContentResolver = MockContentResolver()

要么

2:在方法内部模拟它

@Test
fun testContentResolver() {
    val contentResolver = mock(ContentResolver::class.java)
}

或者我完全错了,还有另一种正确模拟ContentResolver的方法

kotlin android-contentresolver
1个回答
0
投票

你在这里“双击”你的val:

@Mock val mockContentResolver = MockContentResolver()

要么去

@Mock lateinit var mockContentResolver: ContentResolver

在这种情况下,Mockito嘲笑你的领域。这也等同于您的第二种方法。另一种可能性是:

val mockContentResolver = MockContentResolver()

与指定android测试包的模拟实现。这与Mockito版本完全不同。 Mockito嘲笑你的对象,而MockContentResolverContentResolver类的(或多或少是空的)实现。

我认为这取决于你想要实现的目标。如果您想测试ContentResolver的哪些方法被调用,最好使用Mockito版本。如果你想模仿你的ContentResolver的某个行为,你可以选择MockContentResolver变体。请记住,您必须在那里实现所有使用的方法。否则它将抛出许多UnsupportedOperationExceptions

© www.soinside.com 2019 - 2024. All rights reserved.