Ely*_*lye 1 android unit-testing mockito kotlin
我有一个如下测试,在给定的条件下,我想确保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()
}
}
Run Code Online (Sandbox Code Playgroud)
但它错误地说明了
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!
Run Code Online (Sandbox Code Playgroud)
错误就行了 verify(mainPresenter, never()).presenterFunction()
预计它mainPresenter不是一个模拟对象.我怎样才能测试一个被非模拟对象调用的方法?
我看到如何验证非模拟对象的方法的答案?,但仍然使用Mock和Spy.我希望找到一种方法,而不需要模拟我已经拥有的类实例.
(注:以上是用Kotlin写的)
根据定义,这不起作用.
verify模拟框架只能调用模拟对象.他们无法知道他们无法控制的物体发生了什么或没有发生过什么.您需要模拟演示者,将其替换为存根或...
好吧,我认为这是唯一的两个选择.
| 归档时间: |
|
| 查看次数: |
891 次 |
| 最近记录: |