2010-04-07 158 views
0

我有以下爲我的單元測試:測試自定義約束,

void testCreateDealer() { 
     mockForConstraintsTests(Dealer) 
     def _dealer= new Dealer(dealerName:"ABC", 
          Email:"[email protected]", 
          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) 
      } 
    ) 

回答

2

嘗試改變mockForConstraintsTests()來mockDomain() - 您使用的約束,這依賴於經銷商域Dealer.findX()方法。

順便提一下,除非您在測試類的setUp()方法中創建了類似的經銷商,否則測試仍然失敗。

+0

謝謝阿里 我修改了我的代碼,並對mockDomain做了一些研究。 我改變了我的代碼: http://wb.pastebin.com/g1jCwVAM 但還是驗證不踢 請讓我知道如果我失去了一些東西在這裏 大加讚賞。 – WaZ 2010-04-07 15:31:50

+0

嗨WaZ,我不熟悉這個使用mockForConstraintsTest。 mockDomain()應該設置約束測試。以下通行證:http://pastebin.com/w4mHmFH0 – Armand 2010-04-08 08:12:40

+0

夢幻般的男人 乾杯。 – WaZ 2010-04-08 10:33:11

0

在單元測試中,即使使用mockDomain,域對象的id屬性也不會自動設置或自動遞增。除非您明確設置,否則您創建的所有域對象的ID均爲null

由於測試obj.id == similarDealer.id爲真,因爲它們都有id: null,所以您的測試可能會失敗。嘗試設置你的模擬經銷商對象的id屬性。

+0

不確定,因爲它似乎沒有我的工作來實現自動增量。 – WaZ 2010-04-08 10:33:54