FakeApplication使用特定的application.conf?

Itc*_*chy 2 java playframework-2.0

如何FakeApplication使用my dev.conf而不是默认值创建运行测试application.conf

我目前的测试包括以下构造:

Map<String, String> map = new HashMap<>();
map.put("config.file", "/path/to/dev.conf");
FakeApplication fakeApplication = fakeApplication(map);
TestServer testServer = testServer(3333, fakeApplication);
// testServer.start();
running(testServer, HTMLUNIT, new F.Callback<TestBrowser>() {
    public void invoke(TestBrowser browser) {
        //do something
    }
});
Run Code Online (Sandbox Code Playgroud)

Play Framework文档中改编的关于编写测试的代码会引发以下异常,因为默认情况application.conf不适用于我的开发系统.如果我取消注释,testServer.start();我可以更清楚地看到它.

[WARN] [01/01/2013 18:36:59.505] [pool-4-thread-3] [Dispatchers] Dispatcher [akka.actor.promises-dispatcher] not configured, using default-dispatcher
[WARN] [01/01/2013 18:36:59.521] [play-akka.actor.default-dispatcher-2] [Dispatchers] Dispatcher [akka.actor.actions-dispatcher] not configured, using default-dispatcher
[error] Test test.ApplicationTest.runInBrowser failed: Server is not started!
[error]     at scala.sys.package$.error(package.scala:27)
[error]     at play.api.test.TestServer.stop(Selenium.scala:117)
[error]     at play.test.Helpers.stop(Helpers.java:325)
[error]     at play.test.Helpers.running(Helpers.java:355)
[error]     at test.ApplicationTest.runInBrowser(ApplicationTest.java:74)
[error]     ...
Run Code Online (Sandbox Code Playgroud)

我假设这条线

map.put("config.file", "/path/to/dev.conf");
Run Code Online (Sandbox Code Playgroud)

是错的,必须进行调整.但是怎么样?

lam*_*das 9

用这种方式替换主配置是不可能的.您只能通过传递地图来覆盖特定设置fakeApplication.

即如果您的配置包含:

mongodb.default.uri = ...
logger.root = ERROR
Run Code Online (Sandbox Code Playgroud)

您可以通过在地图中放置新值来覆盖它:

Map<String, String> map = new HashMap<>();
map.put("mongodb.default.uri", "...");
map.put("logger.root", "INFO");

FakeApplication fakeApplication = fakeApplication(map);
Run Code Online (Sandbox Code Playgroud)