2015-03-07 4 views
1

Я следующий старый метод написанный в коде, который для доступа к объекту запроса в классе обслуживания, таких как:Grails Спока тест макет CommonsMultipartFile

def someServiceMethod() { 
    .... 
    def webUtils = WebUtils.retrieveGrailsWebRequest() 
    def request = webUtils.getCurrentRequest() 
    MultipartHttpServletRequest mpr = (MultipartHttpServletRequest) request 
    CommonsMultipartFile file = (CommonsMultipartFile) mpr.getFile("file") 
    .... 
} 

Это мой блок тестовый код для класса Serivce.

@TestFor(SomeService) 
class SomeServiceSpec extends Specification { 
    void "test someServiceMethod"() { 
    given: 
    MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest() 

    FileInputStream inFile = new FileInputStream("./test-data/Hiearchy-003.xlsx") //valid file path 
    def multipartFile = new GrailsMockMultipartFile('file', 'file.xls', 'multipart/form-data', inFile) 
    request.addFile(multipartFile) 
    GrailsWebRequest webRequest = new GrailsWebRequest(
      request, 
      new MockHttpServletResponse(), 
      new MockServletContext() 
    ) 
    request.setAttribute(GrailsApplicationAttributes.WEB_REQUEST,webRequest) 
    RequestContextHolder.setRequestAttributes(webRequest); 

    when: 
    def result = service.someServiceMethod() 

    then: 
    result != null 
    //some more assertions 
    //.. 
    } 
} 

Я застрял в ошибке.

| Failure: test someServiceMethod(SomeServiceSpec) 
| org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'org[email protected]6ae8e5dd' with class 'org.codehaus.groovy.grails.plugins.testing.GrailsMockMultipartFile' to class 'org.springframework.web.multipart.commons.CommonsMultipartFile' 

Кто-нибудь сталкивался с такой проблемой прежде, чем в блочном тесте grails?

ответ

0

Я просто понял, следующая строка просто не нужна, если мы используем входной поток прямых это не должно быть проблемой, следовательно, решить мою проблему ..

CommonsMultipartFile file = (CommonsMultipartFile) mpr.getFile("file") 
1

Вместо: GrailsMockMultipartFile,

использование: org.springframework.mock.web.MockMultipartFile.

+0

Еще же проблема. – mehmood