У меня есть HelperMethod
класс.
class HelperMethods {
def getUniqueID(): UUID = {
UUID.randomUUID()
}
def bucketIDFromEmail(email:String): Int = {
val bucketID= email(0).toInt
println("returning id "+bucketID+" for name "+email)
bucketID
}
}
И object
, который имеет экземпляр HelperMethods
package object utilities{
private val helper = new HelperMethods()
def getUniqueID(): UUID = helper.getUniqueID()
def bucketIDFromEmail(email:String): Int = helper.bucketIDFromEmail(email)
}
Я написал спецификацию, чтобы проверить, что мой макет работает правильно.
class UserControllerUnitSpec extends PlaySpec {
val mockHelperMethods = mock(classOf[HelperMethods])
when(mockHelperMethods.getUniqueID()).thenReturn(UUID.fromString("87ea52b7-0a70-438f-81ff-b69ab9e57210"))
when(mockHelperMethods.bucketIDFromEmail(ArgumentMatchers.any[String])).thenReturn(1)
"mocking helper class " should {
"work" in {
val bucketId = utilities.bucketIDFromEmail("t@t.com")
println("user keys are " + userKeys)
val id: UUID = utilities.getUniqueID()
println("got id " + userKeys)
bucketId mustBe 1
id mustBe UUID.fromString("87ea52b7-0a70-438f-81ff-b69ab9e57210")
}
}
}
тест не пройден по причине 116 was not equal to 1
.Это соответствует строке bucketId mustBe 1
в спецификации.Я могу видеть печать returning id 116 for name t@t.com
.Я не должен видеть это, поскольку я пытаюсь издеваться над этим классом.Я подозреваю, что это может быть потому, что объект utilities
создается перед оператором val mockHelperMethods = mock(classOf[HelperMethods])
в спецификации.
Вопрос 2 - Есть ли способ высмеять HelperMethods
и заставить utilities
использоватьвысмеянный класс?