如何使用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,请不要使用模拟。 使用存根 。