在scala中存在间谍对象的问题

时间:2016-05-07 08:55:56

标签: scala unit-testing playframework specs2

我有一个相当复杂的测试,我决定采用部分存根测试类的方法。在我的测试中我有这样的事情:

val srv = new Service()
val srvSpy = spy(srv)
doReturn(now).when(srvSpy).getRunDateInTimeZone(futureChecklist)
doReturn("boo").when(srvSpy).interpolateChecklistName("name", now)
val returnTuple = (createdChlRev, createdChl)
doReturn(returnTuple).when(srvSpy).create(fChlCreatorId,
        fChlCreatorEmail,
        "username",
        true,
        templateId,
        "boo",
        optDueDate)(connection)

val (chlRev, chl) = srv.createFromFutureChecklist(futureChecklist)(connection)

在上面的代码中,前两个stubbed方法按预期工作。但是,最后一个抛出错误:

  

[错误]创建$ default $ 8()[错误]
无法返回Tuple2   create $ default $ 8()应该返回JsObject [错误] *** [错误]如果   你不确定为什么你上面读错了。 [错误]到期   以上语法的性质可能会出现问题,原因是:[错误]   1.此错误可能发生在错误编写的多线程测试中。 [错误]请参阅有关限制的Mockito常见问题解答   并发测试。 [错误] 2.间谍使用了   when(spy.foo())。then()语法。存根间谍更安全 - [错误]
   - 使用doReturn | Throw()系列方法。更多关于Mockito.spy()方法的javadocs。

我正在尝试一堆不同接近的存根并仍然得到相同的错误。在这一点上,我甚至不知道在哪里看。 我做错了什么?

任何建议都会有所帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

抱歉,这是我自己的愚蠢错误。我正在抄袭间谍课,但是打电话给原来的那个:(

谢谢,