mockito InjectMocks不起作用



我正在尝试使用类的测试实现,并使用@InjectMocks将其注入测试中,但它似乎没有注入它。我尝试使用Spy,但没有奏效,而是创建了一个空白的模拟版本,而不是使用我在@Before函数中创建的版本

这是我下面的测试代码:

@Before
fun setup() {
    someFunction = object : SomeFuntionContract {
        override fun save(test: String) {
            testData = test //breakpoint here but never executes
        }
        override fun get(): String {
            return testData
        }
    }
}
lateinit var testData : String
@InjectMocks
lateinit var delegator: Delegator

@Spy
lateinit var someFunction: SomeFunctionContract

@Test
fun testSomething{
    delegator.retrieve(something)
    Assert.assertTrue(someFunction.get() == "hello")
}

SomeFunctionContract.kt是一个具有saveget功能的接口,SomeFunction是真正的实现测试

delegator.retrieve内部,它调用someFunction.get内部,我正在尝试查看它是否被调用并保存数据。

确保通过以下方式初始化模拟的创建和注入:

1( 在测试类上添加@RunWith(org.mockito.junit.MockitoJUnitRunner)

2(MockitoAnnotations.initMocks(this)添加到您的@Before方法中。

@Before 方法是在Mockito施展其注入魔术后调用的,因此,您正在覆盖Mockito创建和使用的间谍。如果你想有自己的要注入的对象实现(我假设它是SomeFunctionContract(,那么你必须在属性上声明它,而不是在@Before函数上声明它。

综上所述,我认为我们缺少您的代码的一些上下文。你能附加somethingDelegatortestData的代码吗?

已修复:

直接在间谍级别初始化实现:

@Spy
lateinit var someFunction: SomeFunctionContract =  = object : SomeFuntionContract {
        override fun save(test: String) {
            testData = test //breakpoint here but never executes
        }
        override fun get(): String {
            return testData
        }
    }

相关内容

  • 没有找到相关文章

最新更新