出现Mockito问题后怎么处理
来源:爱站网时间:2021-12-15编辑:网友分享
本篇文章将简单描述下关于测试Mockito出现问题后该用什么解决方案,想必很多小伙伴都迫切想知道吧,事不宜迟,随爱站技术频道小编一起了解下。
问题描述
假设我在某些服务类中有以下方法:
public SomeEntity makeSthWithEntity(someArgs){
SomeEntity entity = new SomeEntity();
/**
* here goes some logic concerning the entity
*/
return repository.merge(entity);
}
我想测试此方法的行为,因此想以以下方式模拟repository.merge
:
when(repository.merge(any(SomeEntity.class))).thenReturn(objectPassedAsArgument);
然后模拟的存储库返回了makesSthWithEntity
传递给它的内容,我可以轻松对其进行测试。
任何想法我如何强制模仿返回objectPassedAsArgument
?
解决方法:
您可以实现Answer
,然后改为使用thenAnswer()
。
类似于:
when(mock.someMethod(anyString())).thenAnswer(new Answer() {
Object answer(InvocationOnMock invocation) {
return invocation.getArguments()[0];
}
});
当然,一旦有了这个,您就可以将答案重构为可重用的答案,称为ReturnFirstArgument
或类似名称。
有关于Mockito返回与传递给方法相同的对象的测试是不是都了解清楚了,如果还有什么编程上面的问题,可以随时来我们爱站技术频道了解。