JUnit Easymock Неожиданный вызов метода

Я пытаюсь установить тест в JUnit w/EasyMock, и я сталкиваюсь с маленькой проблемой, что я, может казаться, не переношу голову. Я надеялся, что кто-то здесь мог помочь.

Вот упрощенная версия метода, который я пытаюсь протестировать:

public void myMethod() {
    //(...)
    Obj myObj = this.service.getObj(param);
    if (myObj.getExtId() != null) {
      OtherObj otherObj = new OtherObj();
      otherObj.setId(myObj.getExtId());
      this.dao.insert(otherObj);
    }
    //(...)
}

Хорошо так использование EasyMock я дразнил service.getObj(myObj) звоните и это хорошо работает.

Моя проблема возникает, когда JUnit совершает нападки dao.insert(otherObj) звонить. EasyMock бросает a *Unexpected Method Call* на нем.

Я не возражал бы дразнить тот дао в своем тесте и использовании expectLastCall().once(); на нем, но это предполагает, что у меня есть дескриптор на "otherObj", это передается в качестве параметра во время вставки... Который, конечно, я не делаю, так как это условно создается в контексте протестированного метода.

Кто-либо должен был когда-либо иметь дело с этим и так или иначе решил его?

Спасибо.

6
задан apex39 11 August 2015 в 14:53
поделиться

2 ответа

Если вы не можете получить ссылку на саму объект в своем тестовом коде, вы можете использовать EasyMock.anyObject () в качестве ожидаемого аргумента к вашим методам . Как предполагает имя, он ожидает, что метод будет называться с помощью .. Ну любой объект :)

Это может быть немного менее строгим, чем соответствие точного аргумента, но если вы довольны этим, дайте ему вращение Отказ Не забудьте включить отброс в Intoverobj при объявлении ожидаемого вызова метода.

9
ответ дан 8 December 2019 в 03:26
поделиться

Вы также можете использовать EasyMock.isA (OtherObj.class) для большей безопасности типов.

14
ответ дан 8 December 2019 в 03:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: