Своеобразное поведение mockDomain
Привет у меня есть ниже модульный тест,
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)
Есть идеи?
1 ответ
Решение
Если вы измените строку, которая вызывает ошибку:
// mockDomain(Person); over here I get the below error
в
mockDomain( Person, [ person ] )
Это снова работает? Я думаю, что вам либо нужно смоделировать объект домена перед созданием экземпляра, либо вам нужно передать экземпляры в mockDomain
позвоните, чтобы metaClass
может быть установлен правильно.