【发布时间】:2013-04-21 00:04:40
【问题描述】:
我想在我的控制器中测试我的一种 POST 方法,所以我写了这样的东西:
@Test
public void shouldSaveNewCollectionToDatabase(){
String body = "{\"name\":\"collectionName\", \"owner\": {}}";
JsonNode json = Json.parse(body);
FakeRequest request = new FakeRequest(POST, "/rest/collections/add").withJsonBody(json);
Result result = callAction(controllers.routes.ref.SetsAndCollections.postCollection(), request);
verify(questionSetCollectionDAO).save(any(QuestionSetCollection.class));
}
问题是,这个测试失败了,因为控制器方法根本没有被调用,所以我的 questionSetCollectionDAO 方法没有被调用。
我在方法的顶部放置了一些打印:
@BodyParser.Of(Json.class)
@play.db.jpa.Transactional
public static Result postCollection(){
System.out.println("I am here");
...
我在控制台上看不到任何输出。
如果这不是我可以使用虚假请求调用控制器方法的方式,我该怎么做?
我阅读了有关fakeApplication 的信息,但我还有其他方法可以对POST 控制器方法进行一些简单的测试吗?
【问题讨论】:
-
你有没有想过这个问题或者发现了什么?
标签: java unit-testing playframework-2.1