如何对Play内部的内容进行断言! JSON操作结果值?我从一个动作返回一个新的(甚至是空的)JSON ObjectNode,并试图在单元测试的结果中断言它,但是在response.wrappedResult.body中没有看到值(null或其他)。
例如,在我的操作中,如果我返回一个空的JSON对象节点,
ObjectNode response = null;
return ok(response);
或者如果我返回测试值,
ObjectNode response = Json.newObject();
response.put("testKey", "testValue");
return ok(response);
然后我针对结果写了一个测试,
@Test
public void MyTest() {
Result result = MyController.myAction();
// assert against null or specified values here
}
然后我探索整个对象图,
result.wrappedResult.body
我没有看到任何看起来像我的指定结果的断言。
有什么想法吗?
谢谢!
答案 0 :(得分:2)
在Play docs on Java testing中查看测试您的控制器,了解如何正确调用您的操作并测试结果内容的示例。
@Test
public void callIndex() {
Result result = callAction(
controllers.routes.ref.Application.index("Kiki")
);
assertThat(status(result)).isEqualTo(OK);
assertThat(contentType(result)).isEqualTo("text/html");
assertThat(charset(result)).isEqualTo("utf-8");
assertThat(contentAsString(result)).contains("Hello Kiki");
}
Play会在调用操作时执行一些聪明的操作,因此您需要将调用包裹在callAction
中。如果直接调用action方法,则不会得到相同的结果。