我在 A.scala 类中有一段 scala 代码有一个案例类 Case1,其中包含 f1 的字段 Future,它是另一个案例类 Case2 的类型。Case2 包含 Seq[String]。我将 case2 对象发送到另一个实例为 b 的类 B
case class Case2(list: Seq[String])
case class Case1(f1: Future[Case2])
class A(b: B) {
def doSomething() {
val case1 = Case1(Future(Case2(List("Hello")))
val result = b.doSomethingElse(case1) // Another future returned
result
}
}
class ATest extends .... Some scalatest libraries {
val bMock = mock[B]
val a = new A(bMock)
"A" should {
"call b" in {
val case1 = Case1(Future(Case2(List("Hello")))
val result = .....Anything....
(b.doSomethingElse _).expects(case1).returning(Future.successful(result))
a.doSomething().futureValue shouldBe .....Something
}
}
}
测试失败并显示对 B 类的模拟调用与实际调用不匹配的消息。它打印 Expected 和 Actual 但它们在日志中看起来相同。
理想情况下,测试应该通过,因为对 B 的模拟调用与对 B 的实际调用匹配。但我怀疑这是因为Case1
包含了一个 Future,它认为它是一个不同的对象。当我替换通配符 ie 时
(b.doSomethingElse _).expects(*).returning(result)
。
有没有办法通过这个测试?我使用 scalaMock 进行模拟。