2015-09-02 8 views
13

का उपयोग कर 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 के लिए नया हूं इसलिए माफ करना अगर सवाल थोड़ा मूर्ख दिखता है। धन्यवाद!

उत्तर

-1

आप शायद स्कैलास्टप्लस के पुराने संस्करण का उपयोग कर रहे हैं, जो एप्लिकेशन के साथ नकली अनुप्रयोग को ओवरराइड करने का समर्थन नहीं करता है। Play docs (प्ले 2.4) में लाइब्रेरी संस्करण "1.4.0-एम 3" है लेकिन यह "1.4.0" होना चाहिए।

संबंधित मुद्दे