2011-05-24 31 views
1

在单元测试返回以下星座:No such property: title for class: myproject.Item Possible solutions: title当测试访问Item.constraints.xyz的类时,如何摆脱“无此属性”?

ItemController.groovy

def add = { 
    [itemInstance: new Item(), titleMin: Item.constraints.title.size.min() ] 
} 

ItemControllerSpec.groovy

mockDomain Item 
def result = controller.add() 

我怎么能嘲笑的是约束线?

注:我只是想测试运行,而不是由于该行失败。

回答

2

通过metaClass。在setUp(),写类似: Item.metaClass.'static'.constraints = [ title: [ size: [ min: {5}, max: {30} ] ] ]

+0

在我的情况下失败了。然而,感谢您的提示,维克多,我能够想出以下解决方案:'Item.metaClass.'static'.getConstraints = {[title:\t [size:5..20]]}' – user569825 2011-06-03 07:53:31

1

如果测试类扩展GrailUnitTestCase,调用mockForConstraintsTests(Item)测试执行之前。如果您无法扩展此类,请在执行测试之前尝试调用grails.test.MockUtils.prepareForConstraintsTests(Item)

+0

Don,这两个变体都会失败,并显示与我的初始文章中所述相同的错误消息我也尝试过使用新生成的ItemControllerTests.groovy,除了'testSomething'之外别无其他。你自己有没有类似的情况,它在哪里工作? – user569825 2011-05-29 12:43:28