Java Mockito-根据另一个对象状态验证方法调用
我目前正在阅读《成长的面向对象设计——测试引导》一书。作者是书中使用的JMock的创建者。因为Mockito目前拥有最具表现力(可读性)的API,所以我使用Mockito而不是JMock 对于大多数示例,到目前为止,这种方法非常有效,代码少得多。不过,看看API是如何随着时间和框架(JMock->EasyMock->Mockito)的发展而演变并仍然基于相同的概念是很有趣的 无论如何:我需要验证在另一个对象状态具有特定值时是否调用了mock方法。Java Mockito-根据另一个对象状态验证方法调用,java,tdd,mockito,Java,Tdd,Mockito,我目前正在阅读《成长的面向对象设计——测试引导》一书。作者是书中使用的JMock的创建者。因为Mockito目前拥有最具表现力(可读性)的API,所以我使用Mockito而不是JMock 对于大多数示例,到目前为止,这种方法非常有效,代码少得多。不过,看看API是如何随着时间和框架(JMock->EasyMock->Mockito)的发展而演变并仍然基于相同的概念是很有趣的 无论如何:我需要验证在另一个对象状态具有特定值时是否调用了mock方法。 public class TestSomethi
public class TestSomething{
private MyMockedInterface mock;
private States state;
@Test
public void testMethod()
{
// I need something like
when(state.equals(value)).verify(mock).method()
sut.doSomething();
}
}
不幸的是,(T methodCall)无法处理对象比较。在sut.something()之后的assertEquals在这里对我没有帮助,因为状态可能已经在doSomething内改变了好几次
我确信一定有办法解决这个问题。如果老JMock有一个特性Mockito doesnt:-)。。。我就是找不到它。你需要的是一个叫做
答案的东西
-这是一个对象,它封装了一小段代码,当你的方法被调用时会运行。有关使用答案的语法,请参见
在您的答案中
,您可以使用断言检查其他对象的状态是否符合您的需要。最后,您可以执行验证
,以确保调用了该方法