我正在使用 EasyMock 尝试通过一个两层深的项目列表来模拟迭代。我的单元测试代码如下
EventContext ctx = EasyMock.createMock(EventContext.class);
Order order = EasyMock.createMock(Order.class);
Item oli = new Item();
oli.setProduct(370);
List<Item> lineItems = new ArrayList<Item>();
lineItems.add(oli);
EasyMock.expect(ctx.getOrder()).andReturn(order).times(2);
EasyMock.expect(order.getTopLevelLineItems()).andReturn(lineItems);
它试图测试的代码是
for(Item item : (List<Item>) ctx.getOrder().getTopLevelLineItems()) {
if(370 == item.getProduct()) {
result = true;
}
但是当单元测试运行时,我在下面的行中得到一个 NullPointerException:
for(Item item : (List<Item>) ctx.getOrder().getTopLevelLineItems())
似乎我已经正确设置了链接调用,有人对这里可能出现的问题有任何建议吗?
编辑:我想添加我将链拆分为正在测试的类中的不同行,看起来 ctx.getOrder() 不为空,但返回的 lineItems 是