У меня есть контроллер, который выглядит как
class MyController @Inject()(service: MyService,
cc: MessagesControllerComponents
)(implicit ec: ExecutionContext)
extends MessagesAbstractController(cc) {
def getAll ....// all methods of controller
Теперь я пытаюсь выполнить модульное тестирование контроллера, используя Mockito и Scalatest, где я пытаюсь внедрить макетированный объект MyService в модульное тестирование. Мой юнит-тест выглядит следующим образом
class MyControllerTest extends PlaySpec with GuiceOneAppPerSuite {
"MyController" should {
def fakeApplication(): Application = new GuiceApplicationBuilder().build()
"not return 404" when {
"we try to hit the route /ads" in {
val fakeRequest = FakeRequest(GET, "/ads")
val futureResult: Future[Result] = route(fakeApplication, fakeRequest).get
val resultJson: JsValue = contentAsJson(futureResult)(Timeout(2, TimeUnit.SECONDS))
resultJson.toString mustBe """{"status":"success"}"""
}
}
}
}
Теперь, чтобы выполнить модульное тестирование контроллера, мне нужно передать макет службы в контроллере при его создании с помощью guice. Я попробовал следующий метод, чтобы внедрить ложную зависимость в контроллере,
val application = new GuiceApplicationBuilder()
.overrides(bind[MyService])
.build
Однако он не может внедрить поддельный объект службы. Любые указатели на то, где я иду не так, будут высоко оценены. Заранее спасибо.