我有以下作为我的单元测试:
void testCreateDealer() {
mockForConstraintsTests(Dealer)
def _dealer= new Dealer( dealerName:"ABC",
Email:"abc-motors@global.com",
HeadOffice:"",
isBranch:false)
assertFalse _dealer.validate()
}
但是当我运行测试时,我收到以下错误:
No signature of method: static com.myCompany.Dealer.findByDealerNameIlike() is applicable for argument types: (java.lang.String) values: [ABC]
我在域类中使用了一些自定义约束。我该如何测试?
static constraints = {
dealerName(blank:false, validator:
{ val, obj ->
def similarDealer = Dealer.findByDealerNameIlike(val)
return !similarDealer || (obj.id == similarDealer.id)
}
)
答案 0 :(得分:2)
尝试将mockForConstraintsTests()更改为mockDomain() - 您在约束中使用Dealer.findX()方法,该方法依赖于Dealer域。
顺便提一下,除非您在测试类的setUp()方法中创建了类似的经销商,否则测试仍会失败。
答案 1 :(得分:0)
在单元测试中,即使使用mockDomain,域对象的id属性也不会自动设置或自动递增。除非您明确设置,否则您创建的所有域对象都将具有null
的ID。
您的测试可能失败,因为测试obj.id == similarDealer.id
为真,因为它们都有id: null
。尝试设置被模拟的经销商对象的id属性。