Grails 2.4.4:服务不注入:集成测试

Grails 2.4.4: services does not inject: integration test

我有依赖服务的服务,例如:

class ParserService {
    def depService;

    private def parseLine(lineParts) {
    ...
    def set = depService.findItemByName(tmpModule.name);//depService == null
    ...

我尝试像这样实施集成测试:

@TestFor(ParserService)
class ParserServiceTest extends IntegrationSpec {
    def "should not parse comment"() {
        when:
        ...
        def resultList = service.parseAnnotations(inputStream);

resources.groovy:

beans = {
}

我有 NullPointerException: depService - null

您的测试用例应该扩展 class GroovyTestCaseIntegrationSpec,仅此而已。当然依赖注入然后以通常的方式工作

class ParserServiceTest extends IntegrationSpec {
   ParserService parserService

   def "should not parse comment"() {
    when:
    ...
    def resultList = parserService.parseAnnotations(inputStream)
...

@TestFor 注释仅用于单元测试。集成测试像普通 bean 一样工作,因此如果您将服务定义为 class 中的属性,Grails/Spring 将在您的测试中注入您的依赖项,就像在 controller/service/domain class 中一样.