我目前正在努力完成他的书#34;增长面向对象设计 - 以测试为指导"。作者是本书中使用的JMock的创建者。由于Mockito目前拥有最具表现力(可读)的API,我使用的是Mockito而不是JMock。
对于大多数示例而言,到目前为止,这种方法的代码更少。有趣的是,看看API如何在时间和框架(JMock - > EasyMock - > Mockito)中进化,并且仍然基于相同的概念。
无论如何:我需要验证在另一个对象状态具有特定值时调用mock方法。
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没有,那会很奇怪:-) ......我无法找到它。
答案 0 :(得分:1)
你需要的东西叫做Answer
- 这是一个包装一小段代码的对象,这些代码将在调用方法时运行。 http://docs.mockito.googlecode.com/hg/latest/org/mockito/Mockito.html#11
Answer
的语法
在Answer
中,您可以使用断言来检查其他对象的状态是否是您需要的状态。然后在最后,您可以执行verify
,以确保调用该方法。