在FunctionalTests中使用newRequest时出现意外错误

时间:2011-06-06 14:13:00

标签: exception playframework functional-testing

我不明白为什么会出现这个错误。 当我使用newRequest时,我在调用时遇到RuntimeException makeRequest的(请求);方法

异常消息是:“ play.mvc.results.NotFound:POST / ” 但奇怪的是,在.url中,我指的是“/ dashboard”,而不是 “/”(当然,在POST请求的路径文件中很好地指出了url!)

感谢您的帮助。

这是我的测试类:

public class DashboardTest extends FunctionalTest {
    protected Request ajaxRequest;

    @Before
    public void _setUp() {
        Fixtures.deleteDatabase();
        Fixtures.loadModels("fixtures/accounts.yml");

        ajaxRequest = newRequest();
        //ajaxRequest.headers.put("X-Requested-With", new Header("X-
Requested-With", "XMLHttpRequest"));
        ajaxRequest.method = "POST";
        ajaxRequest.url = "/dashboard";
    }

    @Test
    public void testAuthenticateWithValidDataAjax() {
        ajaxRequest.params.put("email", "john.sm...@gmail.com");

        Response response = makeRequest(ajaxRequest);
        assertIsOk(response);
        assertContentType("application/json", response);
    }
}

1 个答案:

答案 0 :(得分:1)

查看API文档,.url指定它需要完整URL。我建议你做的是改为使用.action

这个的Javadoc是

  

完整操作(例如:Application.index)

或指定完整的网址,其中包括

http://localhost:9000/dashboard

如果您仍然遇到问题,最后一个选项是在createRequest对象上使用Http.Request方法,这样您就可以完全控制正在创建的Request对象。签名看起来像这样

createRequest

public static Http.Request createRequest(java.lang.String _remoteAddress,
                                         java.lang.String _method,
                                         java.lang.String _path,
                                         java.lang.String _querystring,
                                         java.lang.String _contentType,
                                         java.io.InputStream _body,
                                         java.lang.String _url,
                                         java.lang.String _host,
                                         boolean _isLoopback,
                                         int _port,
                                         java.lang.String _domain,
                                         boolean _secure,
                                         java.util.Map<java.lang.String,Http.Header> _headers,
                                         java.util.Map<java.lang.String,Http.Cookie> _cookies)