我有一个我想要测试的类看起来像这样: 包com.something;
import org.springframework.beans.factory.annotation.Autowired;
public class ClassToTest implements InterfaceToTest{
@Autowired
AnotherService serviceA;
@Override
public List<String> methodToTest(List<String> randomVar){
...
String stringA = serviceA.someFunction(randomVar);
...
}
}
如何使用spock测试来调用serviceA.someFunction(randomVar)调用的结果来返回我选择的任何String?
package com.something;
import spock.lang.Shared
import spock.lang.Specification
class TestClass extends Specification{
@Shared InterfaceToTest classToTest = new ClassToTest()
static doWithSpring = {
serviceA(AnotherService)
}
def "tests-part-1"(){
when: "something"
...
then: "expect this"
...
}
}
我不知道从哪里开始。我的IDE显示了我添加到测试类的doWithSpring代码的错误。关于如何处理这个的任何想法?
答案 0 :(得分:1)
我建议从更多的单元测试角度考虑它。你想模拟弹簧框架的东西,只是确保你正在测试你的逻辑。这对Spock来说非常容易。
{{1}}
从这里,您可以查看驱动它的数据或使用&gt;&gt;&gt;并传递您想要返回的不同字符串的列表。
答案 1 :(得分:1)
如果您是单元测试,那么请执行@rockympls的建议。
如果您是集成/组件测试,那么请包含spock-spring
依赖项并查看Spock人员的test examples。此外,如果您使用的是Spring Boot 1.4+,则可以执行以下操作:
@SpringBootTest(classes = Application)
@ContextConfiguration
class SomeIntegrationTest extends Specification {
@Autowired
SomeService someService
def 'some test case'() {
...
}
}
有关Spring Boot测试内容的更多信息,请参阅this。