Unit testing Grails单元测试和模拟addTo
我正在尝试测试域对象中对equals的重写,以确保“contains”有效。尽管文档和bug说我应该能够模拟addTo,但单元测试机制却在挑战我 我的测试是:Unit testing Grails单元测试和模拟addTo,unit-testing,grails,Unit Testing,Grails,我正在尝试测试域对象中对equals的重写,以确保“contains”有效。尽管文档和bug说我应该能够模拟addTo,但单元测试机制却在挑战我 我的测试是: @TestFor(Member) @Mock([Member]) class MemberCategoryTests { void testContains() { MemberCategory schoolCat = new MemberCategory(name: "SCHOOL") MemberCategory
@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: "mmm@yyy.com")
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])应该可以做到这一点:正如一样,我觉得您需要两个更改才能使其正常工作 1.将
MemberCategory
添加到@TestFor
,因为您试图将成员添加到membercategrit,那么您的代码将如下所示:
@TestFor(MemberCategory)
@TestFor(Member)
2.在添加member.addToMemberCategories(membersCat)
后,也可以调用save()
,那么您的代码将变成这样
if(!member.save(validate: true,flush:true,failOnError: true)) {
member.errors.each {
log.debug(it)
}
}
希望这有帮助。我觉得您需要两个更改才能使其正常工作 1.将
MemberCategory
添加到@TestFor
,因为您试图将成员添加到membercategrit,那么您的代码将如下所示:
@TestFor(MemberCategory)
@TestFor(Member)
2.在添加member.addToMemberCategories(membersCat)
后,也可以调用save()
,那么您的代码将变成这样
if(!member.save(validate: true,flush:true,failOnError: true)) {
member.errors.each {
log.debug(it)
}
}
希望这能有所帮助。Yes-额外的@TestFor将删除问题中的错误。我无法确认是否需要保存,因为包含()的测试报告以任何方式都不起作用。Thanksys-额外的@TestFor将删除问题中的错误。我无法确认是否需要保存,因为包含()的测试报告以任何方式都不起作用。谢谢