Scala测试中的模拟不起作用,实际方法被调用
test("test generateEdgeForRegion method") {
val mockobj = mock[GraphElementGeneratorService]
val jsonString = CreateJsonRecord.getJsonFromFile("/ResponseForRegionEdgeUpdationTest.json")
val generatorService = new GraphElementGeneratorService
when(mockobj.getToken()).thenReturn("pnt95greg178pkagkmj28g35tnkh43pg")
when(mockobj.getRefDataURL("baseUrl")).thenReturn("http://dbvrt28887:9000/graph/EnterpriseProvider/edges")
generatorService.generateEdgeForRegion(jsonString, region)
}
1条答案
按热度按时间vd8tlhqk1#
测试代码是创建
GraphElementGeneratorService
的两个不同的“示例”。我说“示例”是因为一个是模拟示例,另一个是实际示例。它们之间绝对没有任何关系,因此为mock上的特定方法调用提供返回值对真实的示例没有任何影响。按照this post中提到的方法研究
thenCallRealMethod()
,或者考虑重构代码,使getToken()
和getRefDataURL(...)
成为某个对象上的方法,并作为构造函数参数提供给GraphElementGeneratorService
。这样,真实的代码可以传入一个真实的对象,而您的测试代码可以传入一个模拟对象。然后,您粘贴的代码中的when(...).thenReturn(...)
语句将起作用(只要mockobj
是您传递到new GraphElementGeneratorService(...)
中的这个新类的模拟)