开发者

peculiar behaviour of mockDomain

Hi I have the below unit test,

 class BookUnitSpec extends UnitSpec  {
def "Person_roleOf() is able to retrive the person role based on the ROLETYPE enum"(){
    setup: "Mock the person object"
    mockDomain(Person); //if I move this line to 3 lines below ... //otherwise the test passes
    def person = new Person()
    def employee = new Employee(id:1)
    def employees = [employee]
           //       mockDomain(Person);    over here I get the below error
    mockDomain(PersonRole,employees);
    mockDomain(Employee,employees);
    when: "Add employee role to the person"
    person.addToPersonRoles(employee);
    person.save()
    then: "Check if the role can be correctly retrieved"
    person!=null
    person.roleOf(ROLETYPES.EMPLOYEE)!=null;
    person.roleOf(ROLETYPES.AUTHOR)==null;
}
}

throws

groovy.lang.MissingMethodException: No signature of method: com.nthdimenzion.domain.base.Person.addToPersonRoles() is applicable for argument types: (com.nthdimenzion.domain.Employee) values: [com.nthdimenzion.domain.Employee@a6cbf7[empId=<null开发者_运维技巧>]]
Possible solutions: addToPersonRoles(java.lang.Object), getPersonRoles()
    at org.nthdimenzion.domain.BookUnitSpec.Person_roleOf() is able to retrive the person role based on the ROLETYPE enum(BookUnitSpec.groovy:21)

groovy.lang.MissingMethodException: No signature of method: com.nthdimenzion.domain.base.Person.addToPersonRoles() is applicable for argument types: (com.nthdimenzion.domain.Employee) values: [com.nthdimenzion.domain.Employee@a6cbf7[empId=<null>]]
Possible solutions: addToPersonRoles(java.lang.Object), getPersonRoles()
    at org.nthdimenzion.domain.BookUnitSpec.Person_roleOf() is able to retrive the person role based on the ROLETYPE enum(BookUnitSpec.groovy:21)

groovy.lang.MissingMethodException: No signature of method: com.nthdimenzion.domain.base.Person.addToPersonRoles() is applicable for argument types: (com.nthdimenzion.domain.Employee) values: [com.nthdimenzion.domain.Employee@a6cbf7[empId=<null>]]
Possible solutions: addToPersonRoles(java.lang.Object), getPersonRoles()
    at org.nthdimenzion.domain.BookUnitSpec.Person_roleOf() is able to retrive the person role based on the ROLETYPE enum(BookUnitSpec.groovy:21)

Any ideas ?


If you change the line which causes the error:

       //       mockDomain(Person);    over here I get the below error

to

       mockDomain( Person, [ person ] )

Does it work again? I think you either need to mock the domain object before you create an instance, or you need to pass the instances to the mockDomain call so that the metaClass can be set correctly.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜