В следующем тесте у меня неверная установка заглушки. Макет requestBuilder
заглушен параметром "INCORRECT"
, тогда как тестируемый класс вызывает его с параметром "/socket"
.
Мой опыт работы с Mockito в JUnit говорит мне, что вызов во время выполнения приведет к null
. Тем не менее, я вижу ложное срабатывание. Тест проходит, и requestBuilder
возвращает макет request
, даже если он вызывается с "/socket"
.
Почему это? Это как-то связано с наличием более чем одного ожидания? Если да, то учитывается последнее ожидание, и оно должно потерпеть неудачу.
class ChannelSpec extends Specification with Mockito with ScalaCheck with ArbitraryValues { def is = s2"""
A Channel must
send an open request to /socket with provided channel name on instantiation $sendToSocket
"""
def sendToSocket = prop{(name: String, key: Key, secret: Secret) =>
val requestBuilder = mock[(String, Seq[Map[String, String]]) => Req]
val request = mock[Req]
val httpRequestor = mock[(Req) => Future[String]]
val result = mock[Future[String]]
val params = Seq(Map("key" -> key.value, "timestamp" -> anyString, "token" -> anyString), Map("channel" -> name))
requestBuilder("INCORRECT", params) returns request
httpRequestor(request) returns result
new Channel(name, key, secret, requestBuilder = requestBuilder, httpRequestor = httpRequestor)
there was one(requestBuilder).apply("INCORRECT", params)
println("expecting " + request)
there was one(httpRequestor).apply(request)
}