当前位置: 首页 > 知识库问答 >
问题:

JUnit对play.mvc.result内容断言?

丁英韶
2023-03-14

一个人如何断言在一个游戏的主体内的内容!JSON操作结果值?我正在从一个操作返回一个新的(甚至是空的)JSON ObjectNode,并试图在单元测试的结果中对其进行断言,但在response.wrappresult.body中没有看到值(null或其他)。

例如,在我的操作中,如果返回一个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

谢了!

共有1个答案

秦彦君
2023-03-14

看一下关于Java测试的Play文档中的控制器测试,以获得如何正确调用操作和测试结果内容的示例。

@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方法,将不会得到相同的结果。

 类似资料:
  • 在第一次和第二次调用时抛出的方法: 测试: 你能帮我找到更好的解决办法吗?使用Mockito作为更好的解决方案也是可以接受的。 更好的意思是,如果我能在测试中避免try/catch甚至多次try/catch。在其他语言或jAsutter中,我认为即使在Spring也有这样的语句: 我认为Mockito或JUnit4.x也有类似的情况。 我知道关于 但这只有在我期望一次投掷并且测试结束后才可以接受。

  • 问题内容: 今天,我看到了一个带有Java断言而不是JUnit断言的JUnit测试用例-相对于另一个而言,优先选择一个优点还是缺点? 问题答案: 在JUnit4中,JUnit断言引发的异常(实际上是Error)与java 关键字(AssertionError)引发的错误相同,因此它与堆栈跟踪完全相同,除了您无法分辨出其区别。 话虽这么说,断言必须在JVM中使用特殊标志运行,导致许多测试似乎通过了,

  • 有没有Hamcrest可以让我明确断言,返回对象的的方法的结果至少有一个对象包含具有特定值的属性? 例如: 测试下的方法返回一个的集合。我需要断言至少有一个人叫彼得。

  • 我正在使用JUnit自动化功能测试。我遇到了一个问题:如果我遵循规则“每个测试方法一个(重要的)断言”,那么每个测试用例最终会有一堆6行测试方法(17个是迄今为止最大的数字)。如果我将它们全部放入一个测试方法中,我必须注释掉失败的断言,否则一半的测试永远不会启动。 我不喜欢第一种方式,因为它启动浏览器的次数太多,而且浏览器启动登录/注销似乎比测试运行本身更“昂贵”和耗时。 第二种方法也不好,因为它

  • 我试着 我在调试时获得和是。 如何在使用时断言大于条件

  • 在AssertJ中,您可以执行以下操作来断言列表的内容: 我经常发现自己想对元素本身做更复杂的断言,例如,断言爱丽丝是个高高的黑发女人,鲍勃是个矮小的秃头。使用AssertJ做这件事的最佳方法是什么? 我自己的解决办法是: