Dagger 2 模拟内容解析器 class
Dagger 2 Mocking Content Resolver class
我有一个 ContentResolver
使用 Dagger2
注入到我的 fragment
中。我想在浓缩咖啡中模拟这个,所以在我的测试中我会这样做:
1:在class中将其模拟为外部变量
@Mock val mockContentResolver = MockContentResolver()
或
2:在方法中模拟它
@Test
fun testContentResolver() {
val contentResolver = mock(ContentResolver::class.java)
}
或者我做的完全错了,还有另一种方法可以正确模拟 ContentResolver
你"double mock"你的值在这里:
@Mock val mockContentResolver = MockContentResolver()
要么去
@Mock lateinit var mockContentResolver: ContentResolver
在这种情况下,Mockito 会模拟您的字段。这也相当于你的第二种方法。另一种可能是:
val mockContentResolver = MockContentResolver()
with 分配 android 测试包的模拟实现。这与 Mockito 版本完全不同。 Mockito 模拟你的对象,而 MockContentResolver
是 ContentResolver
class.
的一个(或多或少是空的)实现
我认为这取决于你想要达到的目标。如果你想测试调用了 ContentResolver 的哪些方法,你最好使用 Mockito 版本。如果你想模仿 ContentResolver 的某种行为,你可以选择 MockContentResolver
变体。请记住,您必须在那里实现所有使用的方法。否则会抛出很多UnsupportedOperationExceptions
.
我有一个 ContentResolver
使用 Dagger2
注入到我的 fragment
中。我想在浓缩咖啡中模拟这个,所以在我的测试中我会这样做:
1:在class中将其模拟为外部变量
@Mock val mockContentResolver = MockContentResolver()
或
2:在方法中模拟它
@Test
fun testContentResolver() {
val contentResolver = mock(ContentResolver::class.java)
}
或者我做的完全错了,还有另一种方法可以正确模拟 ContentResolver
你"double mock"你的值在这里:
@Mock val mockContentResolver = MockContentResolver()
要么去
@Mock lateinit var mockContentResolver: ContentResolver
在这种情况下,Mockito 会模拟您的字段。这也相当于你的第二种方法。另一种可能是:
val mockContentResolver = MockContentResolver()
with 分配 android 测试包的模拟实现。这与 Mockito 版本完全不同。 Mockito 模拟你的对象,而 MockContentResolver
是 ContentResolver
class.
我认为这取决于你想要达到的目标。如果你想测试调用了 ContentResolver 的哪些方法,你最好使用 Mockito 版本。如果你想模仿 ContentResolver 的某种行为,你可以选择 MockContentResolver
变体。请记住,您必须在那里实现所有使用的方法。否则会抛出很多UnsupportedOperationExceptions
.