2014-02-10 4 views
1

Я пытаюсь проверить переопределение равных в объекте домена, чтобы гарантировать, что «содержит» работает. Механическая тестовая механика бросает вызов мне, несмотря на документацию и ошибки, говорящие, что я должен быть в состоянии издеваться над addTo.Grails Unit test и mocking 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 реализует равные.

Этот документ говорит @Mock ([ууу]) следует сделать трюк: Naleid upgrading to grails 2 testing как это делает unit testing addto

ответ

4

Я чувствую что вам нужно два изменения, чтобы сделать его работу

1.Add MemberCategory к @TestFor, потому что ваша пытаясь добавить членов membercategirt, то ваш код будет так:

@TestFor(MemberCategory) 
@TestFor(Member) 

2.Also называют save() после добавления member.addToMemberCategories(membersCat), затем ваш код станет чем-то вроде этого

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

Надеюсь, это поможет.

+0

Да - дополнительный @TestFor удаляет ошибку из вопроса. Я не могу подтвердить, что сохранение требуется, поскольку отчеты об испытаниях, содержащие contains(), не работают в любом случае. благодаря – Interlated

Смежные вопросы