如何使用Jmock生成模拟Json请求?

时间:2014-03-10 09:02:29

标签: mocking jmock

在我们的代码中,我们从ActiveMQ获取Json对象,然后决定操作的动作和其他参数,然后将Json对象返回给ActiveMQ。要进行单元测试,我们必须模拟Json对象请求。

1 个答案:

答案 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);
    }
}

无论如何,模拟行为不是数据。