如何在 junit 测试 groovy 和 grails 中模拟 RequestContextHolder

Che*_*nna 3 grails groovy junit

如何嘲笑:

Long countryId = RequestContextHolder.currentRequestAttributes()?.session.country_id?.toLong();
Country country = Country.get(countryId) 
Run Code Online (Sandbox Code Playgroud)

在STS中使用Groovy 和 Grails 框架进行 junit 测试?

小智 5

您可以在测试中设置RequestAttributes,例如:

待测试方法

def someMethod () {
    ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
    HttpServletRequest request = attr.getRequest();

    ...

    return null;
}
Run Code Online (Sandbox Code Playgroud)

测试方法

def testSomeMethod() {
    given:
    RequestAttributes mockRequest = new ServletWebRequest(new MockHttpServletRequest("GET", "/test"))
    RequestContextHolder.setRequestAttributes(mockRequest)

    when:
    def result = userDetailsService.someMethod()

    then:
    ...
}
Run Code Online (Sandbox Code Playgroud)