java Play框架1。使用@AllowFeature控制器方法进行x功能测试
我确实想为我们的项目写一些功能测试。Techstack:PlayFramework1.5、Java16、JUnit3
我发现了以下文档: test - 1.5.x security - 1.5.x
控制器看起来像这样
@AllowFeature(Feature.SEARCH_BOX)
public static void search(String term) {
//implementation omitted
TablePage<MyAwesomeType> page = search(term);
render(..., page, term);
}
我的测试是这样的
public class SearchTest extends FunctionalTest {
@Test
public void search_withResults() {
String term = "ABC";
Http.Response response = GET("/foo/search?term=" + term);
assertStatus(302, response);
assertThat(renderArgs("page"), is(notNullValue()));
TablePage<MyAwesomeType> page = (TablePage<MyAwesomeType>) renderArgs("page");
assertTrue(page.getTotalRecords() >= 1);
}
}
然而,TablePage<MyAwesomeType> page
是空的,而实际上它不应该是空的,并且我无法使用调试器进入控制器方法。所以看起来控制器方法search(...)
根本没有被调用
响应代码是302 - Found
,但我认为这可能是因为它找到了路径/foo/search
我的猜测是,我需要设置一些UserContext
或随请求发送一个authenticityToken
。因此play可以检查所需的功能@AllowFeature(Feature.A_SEARCH_BOX)
有人知道我如何设置这样的功能测试吗
感谢您的帮助。谢谢
# 1 楼答案
我终于弄明白了
我需要登录应用程序,然后播放
FunctionalTest.class
来处理cookie@NoAuthenticity
添加到登录方法注意:可以使用JUnit
@Before
注释来简化测试类