私はこのドメインクラスを持っていますWard
。name
私がテストしたいこの制約があります(medi_abs
パッケージWard
はどこにありますか):
package medi_abs
class Ward {
String name
static constraints = {
name blank:false
}
}
今のところ、WardTests.groovy は次のようになります。
package medi_abs
@TestFor(Ward)
@Mock(Ward)
class WardTests {
void testInstance() {
def wardx = new Ward(name: 'OP')
assertEquals 'OP', wardx.name
}
void testConstraints() {
mockForConstraintsTests(Ward)
def wardx = new Ward(name: 'OP')
assertTrue wardx.validate()
}
}
コマンドを実行するとtest-app Ward
、testInstance は失敗しませんが、testConstraints は失敗し、その後に次のエラー メッセージが表示されます。
groovy.lang.MissingPropertyException: No such property: validate for class: medi_abs.WardTests at medi_abs.WardTests.testConstraints
[編集: エラー メッセージは次のとおりです。なぜ変更されたのかわかりません: ]
java.lang.NullPointerException
at grails.test.MockUtils$_addValidateMethod_closure87.doCall(MockUtils.groovy:1022)
at grails.test.MockUtils$_addValidateMethod_closure88.doCall(MockUtils.groovy:1065)
at medi_abs.WardTests.testConstraints(WardTests.groovy:43)
最初のメソッドでWard
は適切にインスタンス化されているようですが、validate() コマンドに関連してwardx
null です。これまでに良い例を見つけることができませんでした。validate() を間違って使用していますか? それとも、Grails で制約をテストするより良い方法はありますか?