unit-testing - 声明在 Controller 中设置的 session 变量-Grails测试用例

标签 unit-testing grails junit

我有一个 Controller 操作来检查条件,并根据条件的结果将字段设置为 session 变量

Controller :

def checkUser={
    if(condition: true){
       session.user = id
    }else{
       session.user=null
    }
}

现在,在我的测试用例中,如果我必须断言该 session 的用户值,我该怎么做?

我像这样尝试过,但是没有用:
void testSomething(){
    controller.checkUser()
    assertNull(session.user)
}

关于如何声明在 Controller 中设置的 session 变量的任何想法吗?

最佳答案

确保您的测试类扩展了ControllerUnitTestCase或正在使用测试Mixin。

CUTC提供了多种模拟来促进 Controller 测试。您将执行以下操作:

void testSomething(){
    controller.checkUser()
    assertNull(mockSession.user)
}
  • 这是文件:http://grails.org/doc/1.3.x/api/grails/test/ControllerUnitTestCase.html
  • 如果您使用的是grails 2.0+:http://grails.org/doc/latest/api/grails/test/MvcUnitTestCase.html
  • 关于unit-testing - 声明在 Controller 中设置的 session 变量-Grails测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11729737/

    相关文章:

    laravel - 如何解决无法找到名称为[默认] [App\Models\Domain] 的工厂?

    unit-testing - 如何最好地对使用 IServiceGateway 调用其他内部服务的 ServiceStack 服务进行单元测试

    Python 模拟 : How to inject an object at a specific point in a function?

    grails - 在Grails中创建阻止的用户拦截器

    java - Grails java.lang.NoClassDefFoundError : org/springframework/mock/web/MockHttpServletRequest

    java - 如何模拟java类中的特定静态方法?

    unit-testing - 使用来自终端的gradle for CI进行单元测试

    unit-testing - 使用Grails时,使非写服务方法静态化有什么好处

    java - 如何将 application.properties 加载到测试类中以获取 spring.profiles.active 值?

    java - 模拟单元测试用例的网络响应