如何使用Mockito在模拟对象上设置属性?

我有一个场景,我必须设置一个模拟对象的属性,如下所示:

SlingHttpRequest slingHttpRequest= mock(SlingHttpRequest); slingHttpRequest.setAttribute("search", someObject); 

当我尝试打印此属性时,我得到null 。 我该如何设置此属性?

您通常不会在模拟对象上设置属性; 相反,你在调用时会做一些特定的事情。

 when(slingHttpRequest.getAttribute("search")).thenReturn(someObject); 

Mock对象不是存储数据的位置,它是您在调用其方法时教授行为的。

试试这个: https : //www.google.com/search?q = mocko&example&oq = mocko + example&aqs = chrom-69i57j0l5.6790j0j7&sourceid = chrome&espv = 210&es_sm = 93&ie = UTF-8

我担心你会误用你的模拟SlingHttpRequest

Mockito要求您在测试场景中使用它们之前连接模拟属性,即:

Mockito.when(slingHttpRequest.getAttribute("search")).thenReturn(new Attribute());

您不能在测试期间调用setAttribute(final Attribute a)方法,如下所示:

slingHttpRequest.setAttribute(someObject) ;

如果执行此操作,则在测试运行时, getAttribute()将返回null

很明显,如果您进行unit testing的代码将以这种方式调用模拟器上的setter,请不要使用模拟。 使用存根 。