我试图测试一个使用@inject注入成员的Java类。
我想测试一下
public class SomeJavaClass {
@Inject
private SomeFactory someFactory;
private SomeDAO someMethod(Map someMap) {
SomeDAO someDAO = someFactory.create();
//some code
}
}
我的类没有显式构造函数
如果您的字段是私有的,并且您不使用构造函数,您如何注入它?我会假设这是一个错误,因为如果你从外部注入一些东西,你需要为它提供一个接口。
下面是一个spock规范,它按照您的要求执行,但将某个工厂公开为受保护成员:
import spock.lang.Specification
import spock.lang.Subject
import javax.inject.Inject
interface SomeFactory {
SomeDAO create()
}
class SomeDAO {
}
class SomeJavaClass {
@Inject
protected SomeFactory someFactory;
protected SomeDAO someMethod(Map someMap) {
SomeDAO someDAO = someFactory.create();
//some code
}
}
class SomeJavaClassSpec extends Specification {
def someFactory = Mock(SomeFactory)
@Subject
SomeJavaClass subject = new SomeJavaClass(
someFactory: someFactory
)
def "It uses a factory to create some object"() {
when:
subject.someMethod([:])
then:
1 * someFactory.create() >> new SomeDAO()
}
}
您还可以使用spock collaborators扩展注释来自动注入您的collaborator模拟:
https://github.com/marcingrzejszczak/spock-subjects-collaborators-extension
我是Spock框架的新手,在使用抽象java测试类时遇到了问题。 我想要的是一个groovy测试类,它用一些常用的方法扩展一些其他java抽象类,这些方法反过来扩展规范类。 当我运行GroovyTest类时,我得到以下错误: Org.SpockFramework.Runtime.InvalidSpecException:规范“org.my.package.AbstractTest”未正确编译(Sp
我有一个调用管道步骤方法(带有凭据)的共享库。我正在尝试测试withCredentials方法在调用myMethodToTest时是否被sh脚本正确调用,但在withCredentials闭包中迭代时遇到错误: 测试方法 嘲笑 测试用例 错误(it变量在闭包中变为null)
我在Spring控制器中加载数据库驱动pec.groovymethod.but我不知道如何调用Groovy脚本中的方法。有人能给我建议吗? 带着导游http://docs.groovy-lang.org/latest/html/documentation/guide-integrating.html 我只想访问http://127.0.0.1:8080/spock/test/spock然后运行数据
出于某种原因(我不是很好与Spock和新的嘲笑和攻击),我不能得到一个特定的方法来存根与我想要的。 我已经缩短了一些内容,但基本上我有一个从搜索中返回的书籍列表。每本书都有一个。这本书可能有较旧或较新的版本,但它们都具有相同的--如果用户选择,他们可以获取所有其他版本。 类别:版本 class:用于获取单个作品的附加版本的EditionResults 特别是,我在测试--出于某种原因,我一直收到的
在我的应用程序中有,它有一个操作,如下所示: 现在,我正在测试视图和模型,如下所示: 但是我的测试用例失败了,stacktrace如下: 正在运行2个spock测试。。。第1页,共2页 有什么问题吗。
经过一些谷歌搜索,我没有找到什么地方,决定玩一下,发现如果我执行所有测试,它会运行良好,即使当我改变类名以匹配文件名时,它也会工作。是否有一种方法可以配置Eclipse/JUnit,使其能够在与文件名不匹配的groovy类上运行测试? HelloWorld.groovy: