Использование проверки объекта SpyJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Использование проверки объекта Spy

Сообщение Anonymous »

Я определил шпионский компонент:

@Bean
public IMyService myServiceSpy()
{
return Mockito.spy(new MyServiceImpl());
}


В моем тесте я хочу зафиксировать аргумент, который получает служба.
Конечно, если я определю службу как фиктивную, а не шпионскую, она будет работать, но я хочу активировать реальный метод службы и продолжить поток, потому что мне нужно, чтобы с ее помощью вычислялось возвращаемое значение.

@Inject
private IMyService myServiceSpy;

@Test
public void myTest()
{

//act
//here invoking some service that will eventually invoke MyServiceImpl.

//assert
ArgumentCaptor someObjCaptor = ArgumentCaptor.forClass(SomeObj.class);

try
{
Mockito.verify(myServiceSpy, Mockito.atLeastOnce()).create(someObjCaptor.capture());
}
catch(Exception e)
{
Assert.fail();
}
assertEquals("some value" , someObjCaptor.getValue());


Странно то, что метод шпиона снова активируется при вызове проверки(), но на этот раз метод вызывается с параметрами NULL.

После этого происходит сбой при утверждении

org.mockito.exceptions.base.MockitoException: No argument value was captured! You might have forgotten to use argument.capture() in verify()... ...or you used capture() in stubbing but stubbed method was not called. Be aware that it is recommended to use capture() only with verify()

Examples of correct argument capturing:
ArgumentCaptor
argument = ArgumentCaptor.forClass(Person.class);
verify(mock).doSomething(argument.capture());
assertEquals("John", argument.getValue().getName());


Для запуска тестов я использую приведенное ниже:

@RunWith(SpringJUnit4ClassRunner.class)


Подробнее здесь: https://stackoverflow.com/questions/514 ... spy-object
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»