Estoy intentando hacer una burla simple de una clase de dominio dentro de una prueba unitaria para un servicio de Grails según el seguimiento de la documentación, pero parece que no funciona en absoluto, en las consultas por casos siempre devolver nulo. ¿Me estoy perdiendo algo simple? Aquí está la parte pertinente de mi código, alteré nombres de las clases y métodos de ensayo para mayor claridad:Llamada de MockDomain que proporciona datos del dominio del dispositivo que no funciona, ¿qué me estoy perdiendo? Grails 2.0.1
@TestFor(MyService)
@TestMixin(DomainClassUnitTestMixin)
class MyServiceTests {
void testMyThing() {
defineBeans {anotherService(AnotherService)} //My service under test uses another service, unlikely relevant?
MyUser.metaClass.isDirty = { //workaround for mockDomain not adding isDirty method.
println("dirty check called");
}
mockDomain(MyUser, [
[username: "[email protected]", accountType: UserType.STANDARD, id: 1L],
[username: "[email protected]", accountType: UserType.STANDARD, id:3L],
[username: "[email protected]", accountType: UserType.BUSINESS, id:2L]
])
MyUser user1 = MyUser.get(1);
System.out.println("user 1: ${user1}"); // output is 'user 1: null'
MyUser user1byName = MyUser.findByUsername("[email protected]");
System.out.println("user 1 by name: ${user1byName}"); // output is 'user 1 by name: null'
... the actual testing stuff which would love to have non null MyUser objects ...
}
}
¿Has intentado añadir @Mock (MyUser)? –
@tomas Sí, lo hice, sin efecto. Dada la documentación, no debería ser necesario al usar mockDomain() – Peter