gpt4 book ai didi

java - EasyMock 链式方法调用产生空指针异常

转载 作者:行者123 更新时间:2023-12-02 06:50:03 27 4
gpt4 key购买 nike

我正在使用 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 为

最佳答案

您可能需要添加 EasyMock.replay();

    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(order.getTopLevelLineItems()).andReturn(lineItems).times(2);
EasyMock.replay(order);
EasyMock.expect(ctx.getOrder()).andReturn(order).times(2);
EasyMock.replay(ctx);

关于java - EasyMock 链式方法调用产生空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18153074/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com