在我们的代码中,我们从ActiveMQ获取Json对象,然后决定操作的动作和其他参数,然后将Json对象返回给ActiveMQ。要进行单元测试,我们必须模拟Json对象请求。
答案 0 :(得分:1)
相反,模拟行为怎么样?
@Mock private Action action;
private ActionDispather subject = new ActionDispather(action);
@Test public void doAction1GivenSomeStateIsTrue() throws Throwable {
final Message message = new Message();
message.setState(true);
//message (json object in your case) population is omitted
context.checking(new Expectations() {
{
oneOf(action).doAction1();
}
});
subject.on(message);
}
@Test public void doAction2GivenSomeStateIsFalse() throws Throwable {
final Message message = new Message();
message.setState(false);
//message (json object in your case) population is omitted
context.checking(new Expectations() {
{
oneOf(action).doAction2();
}
});
subject.on(message);
}
json解析可以在Consumer中处理,因此动作决策测试是json不可知的。
public class Consumer {
private ActionDispatcher dispatcher;
public void on(ActiveMQMessage message) {
Message m = convertFrom(message);
dispatcher.on(m);
}
}
无论如何,模拟行为不是数据。