我在src/groovy
这样的课程
public class MyClass {
@AutoWired
SomeOtherClass someOtherClass
String test() {
return someOtherClass.testMethod()
}
}
当我为此方法编写测试时,我收到错误:Cannot invoke method testMethod() on null object
。
这是我的测试: -
def "test test" () {
expect:
myClass.test() == "somevalue"
}
我做错了什么?有没有办法模拟@Autowired
类?
答案 0 :(得分:1)
你需要嘲笑你的someOtherClass
。像这样的东西
def "test test"(){
setup:
myClass.someOtherClass = Mock(SomeOtherClass)
myClass.someOtherClass.testMethod() >> "somevalue"
expect:
myClass.test() == "somevalue"
}
答案 1 :(得分:1)
虽然之前的答案应该有效,但spock根据需要提供了更优雅的注入方式。您可以使用doWithSpring闭包来声明bean,就像使用resources.groovy
在grails中提供的spring dsl支持一样。
class MyClass extends Specification{
def setup(){
static doWithSpring={
someOtherClass(SomeOtherClass)
//declare below if want to inject myClass somewhere else as a bean else not
/*myClass(MyClass){bean->
someOtherClass = someOtherClass
}*/
}
}
def "test test" () {
expect:
myClass.test() == "somevalue"
}
}