3

こんにちは、以下の単体テストがあります。

 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;
}
}

スロー

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)

何か案は ?

4

1 に答える 1

4

エラーの原因となった行を変更すると、次のようになります。

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

       mockDomain( Person, [ person ] )

それは再び機能しますか?インスタンスを作成する前にドメインオブジェクトをモックするか、正しく設定できるようにインスタンスをmockDomain呼び出しに渡す必要があると思います。metaClass

于 2011-05-11T13:41:47.697 に答える