我是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错误。显然我要做的就是在模拟中设置这些。我需要的是如何做到这一点的线索。
答案 0 :(得分:1)
从您的代码中,它看起来SomethingPills是Grails域类。由于您正在传递params并尝试保存,因此需要使用SomethingPills保存所需的值来填充params,否则SomethingPills将抛出ValidationException错误。
populateValidParams(params)可能没有使用SomethingPills保存所需的所有属性填充params。