Я пытаюсь сделать простую имитацию класса домена в модульном тесте для службы Grails в соответствии с документацией, но, похоже, это вообще не работает, поскольку запросы для экземпляров всегда возвращаются нулевой. Я пропустил что-то простое? Вот соответствующая часть моего кода, я изменил имена классов и тестовых методов для ясности:
@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@gmail.com", accountType: UserType.STANDARD, id: 1L],
[username: "user@gmail.com", accountType: UserType.STANDARD, id:3L],
[username: "bizuser@domain.com", 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@gmail.com");
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 ...
}
}