如何在Grails 2.3.9中模拟模拟字段?

时间:2016-10-07 15:21:13

标签: grails

我是Grails / Groovy的新手。我在Groovy中编写了一两个脚本但从未测试过。我的背景是Java。

项目是测试工具的一个古老部分,他们希望为Java 8和我们最新的jar更新。

我一直在读这个: http://docs.grails.org/2.3.9/guide/testing.html ......但我不明白。我试图纠正的测试是响应与无效能力有关的错误。

测试看起来像这样:

@TestFor(SomethingController)
@Mock(Something)
class SomethingControllerTests {
...
    void testDelete() {
        controller.delete()
        assert flash.message != null
        assert response.redirectedUrl == '/somethingPills/list'

        response.reset()

        populateValidParams(params)

        def SomethingPills = new SomethingPills(params)

        def saveValueReturned = SomethingPills.save()

        assert saveValueReturned != null
        assert SomethingPills.count() == 1

        params.id = SomethingPills.id

        controller.delete()

        assert SomethingPills.count() == 0
        assert SomethingPills.get(somethingPills.id) == null
        assert response.redirectedUrl == '/somethingPills/list'
    }

}

结果是在assert saveValueReturned != null行清除了异常,表示保存不成功。如果我在调试运行期间深入研究Something模拟,我会看到除了errors字段之外所有字段都是null。错误字段列出了与几个字段有关的非nullablle错误。显然我要做的就是在模拟中设置这些。我需要的是如何做到这一点的线索。

1 个答案:

答案 0 :(得分:1)

从您的代码中,它看起来SomethingPills是Grails域类。由于您正在传递params并尝试保存,因此需要使用SomethingPills保存所需的值来填充params,否则SomethingPills将抛出ValidationException错误。

populateValidParams(params)可能没有使用SomethingPills保存所需的所有属性填充params。