是否有使用Scala + PlaySpec + Mockito的每次测试非特定模拟重置模式?

时间:2018-07-17 17:31:09

标签: scala playframework mockito scalatest

我正在为Scala Play应用程序编写单元测试套件,我想知道是否有任何类似于Java的

Selenium.Chrome.WebDriver 2.40
Selenium.WebDriver 3.13
Selenium.Support 3.13
Google Chrome 57.0.2987.98

用于自动模拟带注释的类,并在每次测试后将其重置

目前我正在争取

@Mock
private Foo foo;

@Autowired/InjectMocks
private Bar fixture;

@BeforeMethod
public void setUp() {
  MockitoAnnotations.initMocks(this);
}

在scala测试中粗略尝试使用java注释失败。我目前的方法可行,我只想确保没有更好的方法。

1 个答案:

答案 0 :(得分:2)

mockito-scala从版本0.1.1开始解决此问题,因为它提供了特征(org.mockito.integrations.scalatest.ResetMocksAfterEachTest),该特征有助于在每次测试运行后自动重置任何现有的模拟

必须先在之后 org.mockito.MockitoSugar混合特征,否则测试将无法编译

所以您的代码看起来像这样

TestClass extends PlaySpec with MockitoSugar with ResetMocksAfterEachTest

private val foo = mock[Foo]

override def fakeApplication(): Application = 
    new GuiceApplicationBuilder().overrides(bind[Foo].toInstance(foo)).build

主要优点是不必记住手动重置每个模拟游戏...

如果出于某种原因,您想要使用该特征时不会自动重置的模拟,则应该 是通过org.mockito.MockitoSugar的伴随对象创建的,因此无法通过此机制进行跟踪

免责声明:我是该库的开发人员