Служба модульного тестирования Grails 3.3.8 - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь протестировать метод сервиса, который использует файл в папке src / main / webapp /, но он не работает, по какой-то причине у него, похоже, нет доступа или чего-то другого, код для получения файласледующее:

def file = grailsApplication.parentContext.getResource("folder/file.txt").file

и ошибка:

ServletContext resource [/folder/file.txt] cannot be resolved to absolute file path - web application archive not expanded?

Есть идеи?я думаю, что это не метод grailsApplication или метод получения ресурсов, поэтому у службы нет доступа к этому пути, когда она используется средой тестирования.

1 Ответ

0 голосов
/ 23 февраля 2019

См. Проект на https://github.com/jeffbrown/davidpadillaservice.

https://github.com/jeffbrown/davidpadillaservice/blob/master/src/main/resources/folder/file.txt

line number one
line number two
line number three

https://github.com/jeffbrown/davidpadillaservice/blob/master/grails-app/services/davidpadillaservice/SomeResourceService.groovy

package davidpadillaservice

import org.springframework.beans.factory.annotation.Value
import org.springframework.core.io.Resource

class SomeResourceService {

    @Value("classpath:folder/file.txt")
    Resource fileResource

    String getFirstLine() {
        getLine(0)
    }

    String getSecondLine() {
        getLine(1)
    }

    protected String getLine(int index) {
        fileResource.file.readLines().get(index)
    }
}

https://github.com/jeffbrown/davidpadillaservice/blob/master/src/test/groovy/davidpadillaservice/SomeResourceServiceSpec.groovy

package davidpadillaservice

import grails.testing.services.ServiceUnitTest
import spock.lang.Specification

class SomeResourceServiceSpec extends Specification implements ServiceUnitTest<SomeResourceService>{

    void "test interacting with the service"() {
        expect:
        service.firstLine == 'line number one'
        service.secondLine == 'line number two'
    }
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...