Я использую EasyMock, чтобы попробовать и издеваться над итерацией через список элементов, находящихся на двух уровнях. Мой блок кода тест нижеПривязанный вызов метода 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())
Кажется, я правильно настроил цепочку, у кого есть какие-то предложения о том, что здесь может быть неправильным?
Edit: Я хочу добавить я отщепляются цепь на разные линии в классе тестируется и, кажется, что ctx.getOrder() не равно нулю, но lineItems возвращаемые
Только что попробовал. Это приводит к нулевому указателю на EasyMock.expect (ctx.getOrder(). GetTopLevelLineItems()) andReturn (lineItems) – thurmc
Положите ответ после всех ожидающих вызовов. В противном случае mocks не будет в правильном «состоянии». – dplass