gpt4 book ai didi

java - Play框架-测试POST Controller 方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:29:38 25 4
gpt4 key购买 nike

我想在我的 Controller 中测试我的一个 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));
}

问题是,这个测试失败了,因为根本没有调用 Controller 方法,所以我的 questionSetCollectionDAO 方法没有被调用。

我事件在方法的顶部放置了一些打印:

@BodyParser.Of(Json.class)
@play.db.jpa.Transactional
public static Result postCollection(){
System.out.println("I am here");
...

而且我在控制台上没有看到任何输出。

如果这不是我可以用虚假请求调用 Controller 方法的方式,我该怎么做?

我阅读了有关 fakeApplication 的内容,但我还有其他方法可以对 POST Controller 方法进行一些简单测试吗?

最佳答案

为了测试您的休息服务,首先您应该启动一个虚假的应用程序。

FakeApplication fakeApplication=fakeApplication();
start(fakeApplication);

在你的测试结束时,建议停止它

    stop(fakeApplication);

如果您有很多测试方法,您可以将这些方法添加到您的测试类中以促进测试过程。

FakeApplication fakeApplication = fakeApplication();

@Before
public void beforeTest() {
start(fakeApplication);
}

@After
public void afterTest() {
stop(fakeApplication);
}

关于java - Play框架-测试POST Controller 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16126569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com