mockito Scala测试中的模拟不起作用,实际方法被调用

vsaztqbk  于 9个月前  发布在  Scala
关注(0)|答案(1)|浏览(88)

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)
    }
vd8tlhqk

vd8tlhqk1#

测试代码是创建GraphElementGeneratorService的两个不同的“示例”。我说“示例”是因为一个是模拟示例,另一个是实际示例。它们之间绝对没有任何关系,因此为mock上的特定方法调用提供返回值对真实的示例没有任何影响。
按照this post中提到的方法研究thenCallRealMethod(),或者考虑重构代码,使getToken()getRefDataURL(...)成为某个对象上的方法,并作为构造函数参数提供给GraphElementGeneratorService。这样,真实的代码可以传入一个真实的对象,而您的测试代码可以传入一个模拟对象。然后,您粘贴的代码中的when(...).thenReturn(...)语句将起作用(只要mockobj是您传递到new GraphElementGeneratorService(...)中的这个新类的模拟)

相关问题