Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing Grails单元测试和模拟addTo_Unit Testing_Grails - Fatal编程技术网

Unit testing Grails单元测试和模拟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

我正在尝试测试域对象中对equals的重写,以确保“contains”有效。尽管文档和bug说我应该能够模拟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: "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将删除问题中的错误。我无法确认是否需要保存,因为包含()的测试报告以任何方式都不起作用。谢谢