0
我更新了我的application.conf文件,以接受結構化JSON文字的數組用於特定配置的值:遊戲框架 - 覆蓋對象文本的測試配置陣列
auth.clientKeys = [
{"id": "client1", "secret": "secretvalue1"},
{"id": "client2", "secret": "secretvalue2"}
]
這似乎只是正常工作時在我的應用程序中訪問它,但我不確定我應該如何使用FakeApplication在我的測試中設置這些值。我以爲我可以只使用一個地圖
FakeApplication(additionalConfiguration = Map(
"auth.clientKeys" -> Array(Map("id" -> "testClient", "secret" -> "testSecret"))))
,但我得到的錯誤信息
BugOrBroken: : bug in method caller: not valid to create ConfigValue from: [Lscala.collection.immutable.Map;@4997a288 (ConfigImpl.java:275)
我怎麼能在我的測試覆蓋這些值?
更新1:
我使用Java集合也試圖結合ConfigValueFactory沒有運氣:
import collection.JavaConversions._
def fakeApplicationConfig = FakeApplication(additionalConfiguration = Map(
"auth.clientKeys" -> ConfigValueFactory.fromIterable(asJavaIterable(Array(ConfigValueFactory.fromMap(Map("id" -> "testClient", "secret" -> "testSecret")))))))
這將導致一個類似的錯誤:
BugOrBroken: : bug in method caller: not valid to create ConfigValue from: ConfigString("testSecret")
更新2 :
我還沒找到有效的方法,所以我是instea d使用單個JSON在我的配置字面來解決此問題:
auth.clientKeys = {"client1": "secretvalue1", "client2": "secretvalue2"}
這是不太靈活,但它的工作原理現在,我可以用fakeApplication測試:
FakeApplication(additionalConfiguration = Map(
"auth.clientKeys" -> Map("testClient" -> "testSecret", "testClient2" -> "testSecret2")))
不過,當我嘗試使用沒有運氣,唯一的問題: 高清fakeApplicationConfig = FakeApplication(additionalConfiguration =地圖( (注意:如果你使用的是「test」,那麼你可以使用「test.html」我不能用可變結構替換第一個映射 - 它不能編譯) – user949286