加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 在Play 2.6中对控制器进行单元测试

发布时间:2020-12-16 10:06:15 所属栏目:安全 来源:网络整理
导读:尝试在 Scala中的Play 2.6中测试控制器时,我得到一个空指针异常. 这是对OK响应的测试: class ApplicationControllerSpec extends PlaySpecwith MockitoSugar with ScalaFutures { val mockOrchestrator = mock[ApplicationOrchestrator] val mockCC = mock[
尝试在 Scala中的Play 2.6中测试控制器时,我得到一个空指针异常.
这是对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)
}

这是我正在测试的控制器:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读