gpt4 book ai didi

scala - 在 Play 2.6 中对 Controller 进行单元测试

转载 作者:行者123 更新时间:2023-12-02 05:59:01 25 4
gpt4 key购买 nike

尝试在 Scala 的 Play 2.6 中测试 Controller 时遇到空指针异常。这是对 OK 响应的测试:

class ApplicationControllerSpec extends PlaySpec
with MockitoSugar with ScalaFutures {

val mockOrchestrator = mock[ApplicationOrchestrator]
val mockCC = mock[ControllerComponents]
val controller = new ApplicationController(mockOrchestrator, mockCC)
val method = controller.home()(FakeRequest())

assert(status(method) == 200)
}

这是我正在测试的 Controller :

class ApplicationController @Inject()
(orchestrator: ApplicationOrchestrator, cc: ControllerComponents)
extends AbstractController(cc) with I18nSupport {

def home(): Action[AnyContent] = Action {
implicit request: RequestHeader => //line 29
Ok(views.html.home())
}
}

该错误看起来与隐式请求相关,但我找不到解决方案。

日志输出为:

java.lang.NullPointerException 被抛出。
java.lang.NullPointerException
在controllers.ApplicationController.home(ApplicationController.scala:29)

最佳答案

NPE 是因为您正在使用mock[ControllerComponents]。只需用 stubControllerComponents() 替换它,事情就会按预期工作。

当您调用未正确模拟的方法或访问字段时,测试中会发生 NPE。

我猜你错过了阅读这篇文章。 https://www.playframework.com/documentation/2.6.x/Highlights26#StubControllerComponents

关于scala - 在 Play 2.6 中对 Controller 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44972670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com