मेरे पास एक specs2 परीक्षण है जो FakeAplplication और एम्बेडेड mongodb डेटाबेस का उपयोग करता है।प्ले 2.0 कॉन्फ़िगरेशन के साथ FakeAplication सेटअप
def inMemoryMongoDatabase(name: String = "default"): Map[String, String] = {
val dbname: String = "play-test-" + scala.util.Random.nextInt
Map(
("mongodb." + name + ".db" -> dbname),
("mongodb." + name + ".port" -> EmbeddedMongoTestPort.toString))
}
override def around[T <% Result](t: => T) = {
running(FakeApplication(additionalConfiguration = inMemoryMongoDatabase(), additionalPlugins = Seq("se.radley.plugin.salat.SalatPlugin"))) {
t // execute t inside a http session
}
}
FakeApplication conf निर्देशिका और परीक्षण डेटाबेस प्रत्येक परीक्षा के लिए बनाए जाते हैं के लिए अतिरिक्त विन्यास में डिफ़ॉल्ट application.conf विन्यास का उपयोग करता।
यह तब तक काम कर रहा था जब तक हम एक mongodb प्रतिकृति सेट सेट नहीं करते। अब application.conf इस RepliCat के लिए विन्यास
mongodb.default.replicaset {
host1.host = "localhost"
host1.port = 27017
host2.host = "localhost"
host2.port = 27018
host3.host = "localhost"
host3.port = 27019
}
सेट FakeApplication डिफ़ॉल्ट कॉन्फ़िगरेशन परीक्षण असफल क्योंकि replicaset की मेजबान नहीं पाया जा सकता है का उपयोग करता है के रूप में शामिल हैं। मैं अपने परीक्षणों के लिए एक अलग विन्यास रखना चाहता हूं, मूल रूप से mongodb.default.replicaset प्रविष्टि को हटा दें। यदि mongodb.default.replicaset एक साधारण मानचित्र [स्ट्रिंग, स्ट्रिंग] था जो आसान होगा क्योंकि मैं इसे केवल additonal कॉन्फ़िगरेशन में जोड़ सकता हूं लेकिन जब मैं ऐसा करने का प्रयास करता हूं तो यह विफल हो जाता है क्योंकि अपेक्षित मान प्रकार स्ट्रिंग नहीं बल्कि ऑब्जेक्ट होता है। मैंने पथ पैरामीटर के माध्यम से FakeApplication को एक अलग test.conf फ़ाइल प्रदान करने का भी प्रयास किया है।
override def around[T <% Result](t: => T) = {
running(FakeApplication(path = new java.io.File("conf/test.conf"), additionalConfiguration = inMemoryMongoDatabase(), additionalPlugins = Seq("se.radley.plugin.salat.SalatPlugin"))) {
t // execute t inside a http session
}
}
यह काम नहीं करता क्योंकि यह किसी भी कॉन्फ़िगरेशन को लोड नहीं करता था।
मैं किसी भी मदद की सराहना करता हूं। धन्यवाद।
क्रिस