2015-09-02 23 views
13

Tôi muốn viết kiểm tra chức năng cho bộ điều khiển của mình trong PlayFramework. Để làm điều đó tôi muốn thử thực hiện một số lớp.Cách ghi đè mô-đun guice trong các bài kiểm tra đơn vị Playframework bằng cách sử dụng ScalaTest

tôi thấy ví dụ tốt đẹp như thế nào để làm điều đó bằng spec2 đây: http://www.innovaedge.com/2015/07/01/how-to-use-mocks-in-injected-objects-with-guiceplayscala/

Nhưng tôi đang sử dụng thử nghiệm scala với OneAppPerSuite đặc điểm sử dụng FakeApplication. Dưới đây là tài liệu: https://www.playframework.com/documentation/2.4.x/ScalaFunctionalTestingWithScalaTest

Vấn đề là tôi không thể tìm thấy cách để chặn vào GuiceApplicationBuilder và ghi đè một số ràng buộc với việc triển khai thử.

Dưới đây là FakeApplication thực hiện từ play.api.test:

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 

Vì vậy, không có cách nào cho tôi để đánh chặn thành GuiceApplicationBuilder và ghi đè bindings.

Tôi là người mới chơi playframework nên xin lỗi nếu câu hỏi có vẻ ngớ ngẩn một chút. Cảm ơn!

Trả lời

-1

Có thể bạn đang sử dụng phiên bản ScalaTestPlus cũ hơn, không hỗ trợ ghi đè FakeApplication bằng Ứng dụng. Trong Play docs (Phát 2.4) phiên bản thư viện là "1.4.0-M3" nhưng phải là "1.4.0".

Các vấn đề liên quan