EasyMock дает неожиданные результаты, говорит ожидаемый 1, фактический 0 - PullRequest
3 голосов
/ 05 января 2012

С моими макетами на месте я получаю ошибку:

redisDao.someMethod(notNull(), notNull()): expected 1, actual 0

Если я удаляю настройку макета, то при трассировке в режиме отладки он переходит к методу redisDao.someMethod, а затем завершается с ошибкойисключение нулевого указателя.

Это не имеет смысла для меня, и вы не знаете, как это исправить?

mockMaker = EasyMock.createStrictControl();
redisDaoMock = mockMaker.createMock(redisDao.class);

userService.setRedisDao(redisDaoMock);

expect(redisDaoMock.someMethod(EasyMock.<String>notNull(), EasyMock.<String>notNull())).andReturn(someReturn);

mockMaker.replay();
mockMaker.verify();

userController.get(request, response);

// assertions here

1 Ответ

8 голосов
/ 05 января 2012

Я думаю, что ваша проблема в том, что вы создаете "строгий" фиктивный объект, и он ожидает, что вы вызовете метод, который вы поместили в функцию ожидаем ().Если ваш код не выполняет ожидаемый вызов метода, он выдает ожидаемое 1 фактическое сообщение 0.

Вы можете использовать EasyMock.createNiceMock () вместо createStrictControl, и это должно прекратиться.Или просто убедитесь, что ваш код вызывает метод, который вы указали при вызове Expect.

Вам также может понадобиться добавить .anytimes () в конец ожидаемого вызова, чтобы даже если это не такпозвонил, все будет в порядке.

На этой странице есть несколько хороших объяснений и даже есть ваша ошибка

...