2016-09-18 57 views
1

我如何使用ScalaMock簡單地模擬Guice中注入所需的接口?如何用ScalaMock模擬Guice模塊中的接口?

+0

對於你的測試,你不應該使用Guice。因此,不要注入,你應該直接調用構造函數或者手工完成注入來編寫單元測試。 –

回答

0

通過將模擬實例綁定到類名稱並使用該模塊爲測試注入對象來使用單獨的測試模塊。

測試模塊是這樣的:

class TestModule extends AbstractModule { 
    override def configure(): Unit = { 
    val mockObject = mock[ClassName] 
    bind(classOf[ClassName]).toInstance(mockObject) 
    } 
} 

規格是這樣的:

class SomeSpec extends FlatSpec { 
    val injector = Guice.createInjector(new TestModule) 
    val mockObject = injector.getInstance(classOf[ClassName]) 
} 
0

我已經結束了使用

import org.scalamock.MockFactoryBase 
import org.scalatest.exceptions.TestFailedException 

trait MyMockFactory extends MockFactoryBase { 
    type ExpectationException = TestFailedException 

    override protected def newExpectationException(message: String, methodName: Option[Symbol]): TestFailedException = ??? 
} 

和TestModule

class TestModule extends AbstractModule with MyMockFactory { 
    override def configure(): Unit = { 
    val mockObject = mock[ClassName] 
    bind(classOf[ClassName]).toInstance(mockObject) 
    } 
}