का उपयोग कर Playframework इकाई परीक्षणों में guice मॉड्यूल को ओवरराइड करने के लिए कैसे मैं PlayFramework में अपने नियंत्रक के लिए कार्यात्मक परीक्षण लिखना चाहता हूं। ऐसा करने के लिए मैं कुछ वर्गों के कार्यान्वयन का मज़ाक उड़ाना चाहता हूं।ScalaTest
मैं कैसे यहाँ spec2 का उपयोग कर ऐसा करने के लिए अच्छा उदाहरण पाया: http://www.innovaedge.com/2015/07/01/how-to-use-mocks-in-injected-objects-with-guiceplayscala/
लेकिन मैं OneAppPerSuite
विशेषता FakeApplication का उपयोग करता है के साथ स्केला परीक्षण का उपयोग कर रहा हूँ। https://www.playframework.com/documentation/2.4.x/ScalaFunctionalTestingWithScalaTest
समस्या है कि मैं GuiceApplicationBuilder
में रोकना और नकली कार्यान्वयन के साथ कुछ बाइंडिंग ओवरराइड करने के लिए एक तरह से नहीं मिला सकते हैं: यहाँ प्रलेखन कर रहे हैं।
case class FakeApplication(
override val path: java.io.File = new java.io.File("."),
override val classloader: ClassLoader = classOf[FakeApplication].getClassLoader,
additionalPlugins: Seq[String] = Nil,
withoutPlugins: Seq[String] = Nil,
additionalConfiguration: Map[String, _ <: Any] = Map.empty,
withGlobal: Option[play.api.GlobalSettings] = None,
withRoutes: PartialFunction[(String, String), Handler] = PartialFunction.empty) extends Application {
private val app: Application = new GuiceApplicationBuilder()
.in(Environment(path, classloader, Mode.Test))
.global(withGlobal.orNull)
.configure(additionalConfiguration)
.bindings(
bind[FakePluginsConfig] to FakePluginsConfig(additionalPlugins, withoutPlugins),
bind[FakeRouterConfig] to FakeRouterConfig(withRoutes))
.overrides(
bind[Plugins].toProvider[FakePluginsProvider],
bind[Router].toProvider[FakeRouterProvider])
.build
तो वहाँ मुझे GuiceApplicationBuilder
में रोकना और बाइंडिंग ओवरराइड करने के लिए के लिए कोई रास्ता नहीं है:
यहाँ play.api.test
से FakeApplication
कार्यान्वयन कर रहे हैं।
मैं playframework के लिए नया हूं इसलिए माफ करना अगर सवाल थोड़ा मूर्ख दिखता है। धन्यवाद!