如何使用 Mockito 在模拟对象上设置属性?
我有一个场景,我必须设置模拟对象的属性,如下所示:
SlingHttpRequest slingHttpRequest= mock(SlingHttpRequest);
slingHttpRequest.setAttribute("search", someObject);
当我尝试打印此属性时,我得到.如何设置此属性?null
我有一个场景,我必须设置模拟对象的属性,如下所示:
SlingHttpRequest slingHttpRequest= mock(SlingHttpRequest);
slingHttpRequest.setAttribute("search", someObject);
当我尝试打印此属性时,我得到.如何设置此属性?null
您通常不会在模拟对象上设置属性;相反,当它被调用时,你会做一些特定的事情。
when(slingHttpRequest.getAttribute("search")).thenReturn(someObject);
我担心你滥用了你的嘲笑。SlingHttpRequest
Mockito 要求您在测试场景中使用模拟的属性之前连接它们,即:
Mockito.when(slingHttpRequest.getAttribute("search")).thenReturn(new Attribute());
在测试期间,您不能像这样调用该方法:setAttribute(final Attribute a)
slingHttpRequest.setAttribute(someObject)
;
如果这样做,当测试运行时,将返回 。getAttribute()
null
顺便说一句,如果你要单元测试的代码要以这种方式在你的模拟上调用一个 setter,请不要使用 mock。使用存根。