【发布时间】:2020-01-28 09:08:41
【问题描述】:
我有一个 scala 类 A,其中有一个方法 doSomething。
还有一个B类
class B(name: String)
还有一个C类
class C {
def doSomethingElse(b: B): String {
/// some logic
////
}
}
class A(c: C) {
def doSomething(uuid: UUID): String {
val b = new B("hello)
c.doSomethingElse(b)
// some logic
}
}
现在我想使用 scalatest 和 scalamock 测试 A 类的方法 doSomething
我试图模拟通话doSomethingElse
val mockC = mock[C]
val b = new B("hello")
(mockC.doSomethingElse _).expects(b).returning("A");
但是当实际调用发生时,模拟不会得到满足,因为B 的对象不同。有没有办法表达这个模拟,让它得到满足?
【问题讨论】:
-
如果您希望
new B("hello")被视为与另一个new B("hello")相同,则必须相应地实现.equals。默认情况下,使用 Java 实例标识(只有同一个实例是相等的)。如果B可以是案例类,您可以免费获得。