Grails单元测试导致null实例

时间:2014-10-20 18:20:08

标签: unit-testing grails scaffolding

我正在尝试将单元测试用于脚手架。我对原始脚手架模板进行了一些更改,以满足我的应用需求。这是测试的代码:

void "Test that the show action returns the correct model"() {
    when:"A domain instance is passed to the show action"
        populateValidParams(params)
        def domainName = new DomainName(params)
        controller.show(domain.toString())

    then:"A model is populated containing the domain instance"
        model.domainNameInstance == domainName
}

这是show动作的代码,我根据id中的两个值从数据库中获取域实例,该值由控制器中的toString方法创建:

def show(String id){
    if (id!=null){
        def (term, college)=id.split('_')
        DomainName domainNameInstance
        respond domainNameInstance=DomainName.findByVal1AndVal2(val1, val2)
    }else{
        response.sendError(HttpServletResponse.SC_NOT_FOUND)
    }
}

我遇到的问题是,当我运行测试时,domainInstance在测试中为空,而域正在返回正确的值。有人知道我需要更改以使测试中的domainInstance不为null吗?作为参考,我使用的是Grails 2.4.3和Scaffolding 2.1.2插件。

1 个答案:

答案 0 :(得分:0)

在单元测试中,您需要保存正在创建的DomainName实例。您的show操作正在查询数据库,但您尚未保留测试实例。