class MockitoTest extends MockitoSugar {
val serviceMock = mock[Service]
@Test
def test(): Unit = {
import org.mockito.Matchers.{eq => eqTo, _}
val serviceMock = mock[Service]
when( serviceMock.call("one") ).
thenReturn("123")
verify( serviceMock, times(1) ).call( eqTo("one") )
val result1 = serviceMock.call("one")
...
我最终得到了:
通缉但未调用:service.call(“one”); - >在mockito.MockitoTest.test(MockitoTest.scala:34)实际上,这个模拟没有互动。
我错过了什么吗?
答案 0 :(得分:2)
您的测试应分为三个部分:
when
来描述其预期行为verify
发生了一些互动。在您的测试中,您有2和3反转,第2步直接调用该方法,而不是让您的被测系统调用它。您对verify
的来电失败,因为您对serviceMock.call("one")
的来电尚未发生。
而不是:
when( serviceMock.call("one") ).
thenReturn("123")
verify( serviceMock, times(1) ).call( eqTo("one") )
val result1 = serviceMock.call("one")
你想要这样的东西:
when( serviceMock.call("one") ).
thenReturn("123")
/** Instead of val result1 = serviceMock.call("one") directly: */
val systemUnderTest = SystemUnderTest(serviceMock)
systemUnderTest.someMethodThatInvokesServiceCall()
verify( serviceMock, times(1) ).call( eqTo("one") )
答案 1 :(得分:0)
杰夫对于电话的顺序是正确的。简化:
基本上"验证"应该是电话后:
id