0

我正在编写一个集成测试来模拟来自前端的一系列动作。我正在设置这样的期望:

context.checking(new Expectations() {{
  States state = states("service");

  allowing(service).getPendingTxn();
  will(returnValue(null));
  when(state.isNot("has-pending-txn"));

  one(service).createPendingTxn();
  will(returnValue(txnId));
  then(state.is("has-pending-txn"));

  allowing(service).getPendingTxn();
  will(returnValue(transaction));
  when(state.is("has-pending-txn"));
}});

然后,被测代码按该顺序进行调用。

这对我不起作用。看起来 service.getPendingTxn() 正在返回一个 jMock 空对象,而不是提供的值。我认为当我在期望之后同时写 will(...) 和 when(...) 时,我做错了,但我不确定。

我在这里缺少什么吗?

4

1 回答 1

0

根据 Duncan 的建议,答案是这正是您使用状态的方式。我在测试中遇到了另一个问题,我错误地将其归因于与州有关。

于 2012-10-05T18:29:40.913 回答