Java ScalaTests或Spec2中的模拟静态方法
我想在我当前的maven/java项目中使用scala单元测试,因为它具有BDD特性。但是,我的一些模型类具有静态粗糙方法,如Edit.save()。有什么技术可以模拟Scala中对内部静态方法的隐式调用 对于常规Java测试,这可以使用PowerMock注释轻松完成。我的问题是,我们如何使用任何scala测试框架(ScalaTest,Specs2)实现同样的功能 我了解到,ScalaMock可以帮助实现这一点,但“GeneratedMockFactory”特性并不存在于他们的maven依赖项中(如下所列)。它似乎只适用于SBT项目 我的scala测试库:Java ScalaTests或Spec2中的模拟静态方法,java,scala,mocking,Java,Scala,Mocking,我想在我当前的maven/java项目中使用scala单元测试,因为它具有BDD特性。但是,我的一些模型类具有静态粗糙方法,如Edit.save()。有什么技术可以模拟Scala中对内部静态方法的隐式调用 对于常规Java测试,这可以使用PowerMock注释轻松完成。我的问题是,我们如何使用任何scala测试框架(ScalaTest,Specs2)实现同样的功能 我了解到,ScalaMock可以帮助实现这一点,但“GeneratedMockFactory”特性并不存在于他们的maven依赖项中
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>org.scalatest</groupId>
<artifactId>scalatest_2.10</artifactId>
<version>2.0.M5b</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.scalamock</groupId>
<artifactId>scalamock-scalatest-support_2.10</artifactId>
<version>3.0.1</version>
</dependency>
package com.foo.edit
import org.scalatest._
import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner
import com.foo.models.Edit
@RunWith(classOf[JUnitRunner]) // This line binds the test with maven-surefire runner
class EditSpec extends FlatSpec with ShouldMatchers {
"Edit" should "update name and website" in {
val document = new util.HashMap[String, String]() {
put("name", "A Name")
put("website", "www.domain.com")
}
// This is the test subject, it's a Java class
val edit = new Edit().modifiers(new util.HashMap[String, String]() {
put("name", "Another Name")
put("website", "http://site.org")
});
val result = edit.merge(document); // Here it calls Edit.save(document)
// Want to stub this.
assert(result.get("name") === "Another Name");
assert(result.get("website") === "http://site.org");
}
}