У меня есть класс 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
}
}
Теперь я хочу протестировать метод doSomething
класса A с использованием scalatest и scalamock.
и я пытался издеваться над звонком 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
может быть кейс-классом, вы получите это бесплатно. - person Thilo   schedule 28.09.2019