如何使用手动嵌入Kotlin趣味
我有一个通过测试下面,使用内联的乐趣。
class SimpleClassTest { private inline fun anyObject(): T { return Mockito.anyObject() } lateinit var simpleObject: SimpleClass @Mock lateinit var injectedObject: InjectedClass @Before fun setUp() { MockitoAnnotations.initMocks(this) } @Test fun testSimpleFunction() { simpleObject = SimpleClass(injectedObject) simpleObject.simpleFunction() verify(injectedObject).settingDependentObject(anyObject()) } }
但现在我想删除内联的乐趣,因为它只有一个用法。 所以我用实际的类名称替换T,即Response(来自Okhttp),并将其直接设置为参数settingDependentObject
class SimpleClassTest { lateinit var simpleObject: SimpleClass @Mock lateinit var injectedObject: InjectedClass @Before fun setUp() { MockitoAnnotations.initMocks(this) } @Test fun testSimpleFunction() { simpleObject = SimpleClass(injectedObject) simpleObject.simpleFunction() verify(injectedObject).settingDependentObject(Mockito.anyObject()) } }
它会失败
java.lang.IllegalStateException: Mockito.anyObject() must not be null
我怎么能手动内联正确的行为,当我有private inline fun anyObject(): T
?
更新注意:这是Kotlin的后续问题:手动内联generics函数会产生不同的结果? 。 前面提供了为什么,但我不能得到如何手动内联正确。