我怎么能测试一个方法没有被非mock对象调用呢



我有一个测试,如下所示,在给定的条件下,我希望确保mainPresenter.presenterFunction()不会被调用。

class MainPresenterTest {
    val mainPresenter: MainPresenter
    val mainView: MainView
    val mainBridge: MainBridge
    init {
        mainView = mock(MainView::class.java)
        webBridge = mock(MainBridge::class.java)
        mainPresenter = MainPresenter(mainView, mainBridge)
    }
    @Before
    fun setUp() {
        MockitoAnnotations.initMocks(this)
    }
    @Test
    fun simpleTeset1() {
        // Given
        whenMock(mainView.viewFunctionCondition()).thenReturn(true)
        // When
        mainPresenter.onTriggger()
        // Then
        verify(mainView).viewFunction1()
        verify(mainPresenter, never()).presenterFunction()
        verify(mainView, never()).viewFunction2()
    }
}

然而,它错误地指出

org.mockito.exceptions.misusing.NotAMockException: 
Argument passed to verify() is of type MainPresenter and is not a mock!
Make sure you place the parenthesis correctly!

错误在verify(mainPresenter, never()).presenterFunction() 线上

由于mainPresenter不是模拟对象,因此应为它。如何测试为非mock对象调用的方法?

我在如何验证非mock对象的方法被调用中看到了答案?,但这仍然在使用Mock和Spy。我希望找到一种不需要为我已经拥有的类实例进行mock的方法。

(注意:以上是用Kotlin编写的)

根据定义,这是行不通的。

模拟框架只能verify调用模拟对象。他们无法知道他们无法控制的对象发生了什么或没有发生什么。你要么需要嘲笑你的演讲者,用存根代替它,要么。。。

嗯,我认为这是仅有的两种选择。

相关内容

  • 没有找到相关文章

最新更新