Ich habe einen Test wie folgt, wo in der gegebenen Bedingung, ich möchte sicherstellen, mainPresenter.presenterFunction()
wird nicht aufgerufen.Wie kann ich testen, ob eine Methode für ein nicht mock-Objekt aufgerufen wird?
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()
}
}
es Fehler aus Jedoch
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!
Der Fehler auf der Leitung verify(mainPresenter, never()).presenterFunction()
Es als mainPresenter
erwartet ist unter Angabe ist kein Mock-Objekt. Wie kann ich eine Methode testen, die für ein Nicht-Mock-Objekt aufgerufen wird?
Ich sehe die Antwort in how to verify a method of a non-mock object is called?, aber das ist immer noch mit Mock und Spy. Ich hoffe, einen Weg zu finden, ohne für eine Klasseninstanz, die ich bereits habe, zu verspotten.
(Hinweis: Die oben in Kotlin geschrieben)
Wie in der Antwort, auf die Sie verwiesen haben, gezeigt wurde, wurde spy entwickelt, um genau dieses Problem zu lösen - Sie können damit Aufrufe einer nicht-mock-Objektinstanz verifizieren. Kannst du erklären, warum Spion nicht benutzt werden kann? –
Das, was Sie versuchen, ist auch ein Zeichen für schlechtes Klassen-Design. Halten Sie Ihre Interna geheim und testen Sie externes Verhalten. – nhaarman