Я пытаюсь протестировать следующую строку кода с помощью ScalaTest и ScalaMock.Mocking Play WSRequestHolder get method using Scalamock
val responseFuture = wsClient.url(url).withQueryString(params: _*).get()
wsClient
тип THttpClient
, который представляет собой оболочку из play.api.libs.ws.WS
.
Учитывая, что:
val mockHttpClient = mock[THttpClient]
правильно впрыскивается в моем классе при испытании, проверочный код, что-то вроде этого:
val expectedUrl = "some url"
val mockRequestHolder = mock[WSRequestHolder]
inSequence {
(mockHttpClient.url _).expects(expectedUrl).returns(mockRequestHolder)
(mockRequestHolder.withQueryString _).expects(where {
(parameters: Seq[(String, String)]) => {
// assertions on parameters
// ...
true
}
}).returns(mockRequestHolder)
val stubResponse = stub[WSResponse]
val jsonBody = "{}"
(stubResponse.json _).when().returns(Json.parse(jsonBody))
(mockRequestHolder.get _).expects().returns(Future(stubResponse))
}
IntelliJ выдвигает на первый план mockRequestHolder.get
как ошибку, говоря: не может разрешить символ получить. Тем не менее я могу запустить тест, но макет явно не работает, и я получаю: java.util.NoSuchElementException: JsError.get.
Макет работает, когда я пытаюсь высмеять любой другой метод WSRequestHolder
, но не с методом get
.
Является ли это ошибкой ScalaMock или я делаю что-то неправильно?