ScalaMock - непростая насмешка HttpResponse - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь запустить следующий тест:

import AV_Enums.TimeSeriesFunctions
import org.scalamock.scalatest.MockFactory
import org.scalatest.funsuite.AnyFunSuite
import org.scalatest.matchers.must.Matchers.{be, _}
import scalaj.http.HttpResponse

import scala.io.Source

class ResponseParserTest extends AnyFunSuite with MockFactory {


  test("Parsing from a valid response returns a Right") {
    val mockResponse = Source.fromResource("MockResponse.json").mkString

    val mockResponse = mock[HttpResponse[String]]
    (mockResponse.body _).expects().returning(mockResponse)

    ResponseParser.convertTimeSeries(TimeSeriesFunctions.TIME_SERIES_INTRADAY, mockResponse) must be('right)
  }
}

Однако я получаю следующую ошибку сборки, которую не могу понять, в чем причина:

type mismatch;
 found   : T
 required: String
    val mockResponse = mock[HttpResponse[String]]
 _ must follow method; cannot follow mockResponse.body.type
    (mockResponse.body _).expects().returning(mockResponse)

I я уверен, что мне что-то не хватает в использовании ScalaMock, но я не могу найти, что это такое.

1 Ответ

0 голосов
/ 21 апреля 2020

Это известная ошибка в ScalaMock. Попробуйте обходной путь ниже и посмотрите, поможет ли это вам - он блокирует параметр типа перед тем, как издеваться над подклассом.

test("Parsing from a valid response returns a Right") {
  val mockResponse = Source.fromResource("MockResponse.json").mkString
  class StringHttpResponse extends HttpResponse[String]("", 0, Map.empty())
  val mockResponse = mock[StringHttpResponse]
  (mockResponse.body _).expects().returning(mockResponse)

  ResponseParser.convertTimeSeries(TimeSeriesFunctions.TIME_SERIES_INTRADAY, mockResponse) must be('right)
}
...