Я пытаюсь установить тест в 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", это передается в качестве параметра во время вставки... Который, конечно, я не делаю, так как это условно создается в контексте протестированного метода.
Кто-либо должен был когда-либо иметь дело с этим и так или иначе решил его?
Спасибо.
Если вы не можете получить ссылку на саму объект в своем тестовом коде, вы можете использовать EasyMock.anyObject ()
в качестве ожидаемого аргумента к вашим методам
. Как предполагает имя, он ожидает, что метод будет называться с помощью .. Ну любой объект :)
Это может быть немного менее строгим, чем соответствие точного аргумента, но если вы довольны этим, дайте ему вращение Отказ Не забудьте включить отброс в Intoverobj
при объявлении ожидаемого вызова метода.
Вы также можете использовать EasyMock.isA (OtherObj.class)
для большей безопасности типов.