2014-02-10 164 views
1

我想測試域對象中等於的覆蓋,以確保'包含'的作品。單元測試機制無視我,儘管文檔和錯誤表示我應該能夠模擬addTo。Grails單元測試和模擬addTo

我的測試是:

@TestFor(Member) 
@Mock([Member]) 
class MemberCategoryTests { 

    void testContains() { 
    MemberCategory schoolCat = new MemberCategory(name: "SCHOOL") 
    MemberCategory membersCat = new MemberCategory(name: "Members") 
    Member member = new Member(membershipNumber: "333333", 
      surname: "Tester", 
      forenames: "Jim", 
      preferredEmail: "[email protected]") 
    member.addToMemberCategories(schoolCat) 
    member.addToMemberCategories(membersCat) 

    MemberCategoryRedback memberCategoryRedback = new MemberCategoryRedback(name: "SCHOOL") 
    assert member.memberCategories.contains(memberCategoryRedback) 
    } 
} 

的錯誤是:

No signature of method: au.com.interlated.civiLink.Member.addToMemberCategories() is applicable for argument types: (au.com.interlated.civiLink.MemberCategory) 

域對象是不是特別的。 MemberCategory實現了equals。

該文件說@Mock([YYY])應該做的伎倆:Naleid upgrading to grails 2 testing一樣unit testing addto

回答

4

我覺得你需要兩個變化,使其工作

1.增加MemberCategory@TestFor,因爲你的試圖添加成員membercategirt那麼你的代碼將會變成這個樣子:

@TestFor(MemberCategory) 
@TestFor(Member) 

2.Also加入member.addToMemberCategories(membersCat)後打電話save(),然後你的代碼會變成這樣的東西

if(!member.save(validate: true,flush:true,failOnError: true)) {  
    member.errors.each {  
     log.debug(it) 
    } 
} 

希望這會有所幫助。

+0

是 - 額外的@TestFor從問題中刪除錯誤。我無法確認需要保存,因爲包含()的測試報告不能以任何方式工作。謝謝 – Interlated