我目前正在通过他的书“面向对象的设计 - 面向测试的指导”开展工作。作者是书中使用的JMock的创造者。由于Mockito目前拥有最具表现力(可读)的API,因此我使用的是Mockito而不是JMock。Mockito - 根据另一个对象状态验证方法调用
对于大多数例子来说,目前为止工作得很好,代码少得多。虽然看到API在时间和框架(JMock - > EasyMock - > Mockito)中的演变并且仍然基于相同的概念,这很有趣。
无论如何:我需要验证在另一个对象状态具有特定值时调用模拟方法。
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不会:奇怪的将是奇怪的...我只是无法找到它。