【问题标题】:Asserting on session variable set in controller - Grails test case断言在控制器中设置的会话变量 - Grails 测试用例
【发布时间】:2012-07-30 21:17:38
【问题描述】:

我有一个控制器动作来检查一个条件并根据条件的结果,它将一个字段设置为会话变量

控制器:

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

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

我是这样尝试的,但是没有用:

void testSomething(){
    controller.checkUser()
    assertNull(session.user)
}

关于如何断言在控制器中设置的会话变量有什么想法吗?

【问题讨论】:

  • 断言在 Java 中默认是不启用的。您需要使用 -ea(或)-enableassertion 参数显式启用它们。
  • 我自己没有尝试过,但是在访问参数时,我知道你可以执行 controller.params。如果您执行 assertNull(controller.session.user) 会发生什么??
  • conroller.session.user 不起作用。它抛出异常

标签: unit-testing grails junit


【解决方案1】:

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

CUTC 提供了几个模拟来促进控制器测试。下面是你要做的:

void testSomething(){
    controller.checkUser()
    assertNull(mockSession.user)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多