【问题标题】:how to access session in integration test in grails?如何在grails的集成测试中访问会话?
【发布时间】:2013-08-14 09:56:32
【问题描述】:

在我的项目中,我在登录控制器中设置了 session.loggedInUser。但是在集成测试期间,我们不使用登录控制器。所以我为 session.loggedInUser 设置了值。但我不能在那个地方使用会话。我如何在集成测试中使用会话。对此给出一些解决方案。提前谢谢你

class MaritalStatusIntegrationTests {

    @Test
    void testCategoryAudit() {

        RequestContextHolder.currentRequestAttributes().session.loggedInUser="Anantha"
            def category = new Category(name:"Single")

        category.save(flush:true)
        assert CategoryAudit.count() == 1

        category.name="Married"
        category.save(flush:true)
        assert CategoryAudit.count() == 2
    }
}

Category.groovy:

class Category {
    static constraints = {
        name blank:false
    }
    String name

    //Auditing
    static auditable = false
    def onSave = {
        new CategoryAudit(this,'Insert').save(failOnError:true)
    }
}

CategoryAudit.groovy:

import org.springframework.web.context.request.RequestContextHolder
class CategoryAudit {
    String name
    String operation
    String doneBy
    Date txnDate
    def CategoryAudit(){}
    def CategoryAudit(Category category , String operation) {
        this.name = category.name
        this.operation = operation
        this.doneBy = RequestContextHolder.currentRequestAttributes().session.loggedInUser
        this.txnDate = new Date()
    }
}

【问题讨论】:

  • RequestContextHolder.currentRequestAttributes().session 应该可以工作,你得到了什么错误?
  • 没有这样的属性:类的 RequestContextHolder:com.vasco.gs.MaritalStatusIntegrationTest。导入后它现在可以工作了。

标签: testing grails integration


【解决方案1】:

没有这样的属性:类的 RequestContextHolder: com.vasco.gs.MaritalStatusIntegrationTest.

只是为了清理,根据 OP,它缺少 RequestContextHolder 的导入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-30
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多