【发布时间】:2018-11-10 04:06:59
【问题描述】:
我正在使用 Scala Play 框架编写集成测试。
我在控制器中有一个看起来像这样的函数:
def myEndpoint: AnyAction = myActionProvider.securedEndpoint("myEndpoint") { implicit request =>
// Business logic
Ok("")
}
myActionProvider.securedEndpoint 使用andThen() 将一些操作构建器链接在一起并返回一个ActionBuilder。
在我的集成测试中,我有以下内容:
val fakeRequest: FakeRequest = buildFakeRequest()
myController.myEndpoint.apply(fakeRequest)
虚假请求包含生成的安全令牌和我们的应用所需的其他标头。
我能够闯入myActionProvider.securedEndpoint 并跟踪执行。但是,我无法破解任何 invokeBlock 方法,也无法破解控制器的业务逻辑。日志显示这些路径从未被执行。
如果我将myController.myEndpoint.apply(fakeRequest) 的结果保存到一个变量中,它的类型是Accumulator[ByteString, Result]。看起来这包含链接的 Action 构建器和业务逻辑代码块,但 Play 从不执行它。
代码不会抛出异常,也不会向控制台输出任何内容。
我想知道这是否是我的测试语法错误。我也尝试了以下方法,但无济于事:
myController.myEndpoint { fakeRequest }myController.myEndpoint()(fakeRequest)
是的,代码以“常规”方式运行,例如非测试环境:)
【问题讨论】:
标签: scala playframework integration-testing