Я понял это, и вы бы подумали, что я подумал бы об этом, учитывая, что меня это уже укусило.Проблема заключалась в проверке и в поведении Grails GORM по умолчанию, когда он молчаливо не сохранял данные в save () (который mockDomain должен использовать при передаче данных для своих ложных экземпляров), если в классе Domain есть ошибки проверки.MyUser требовался непустой пароль.
Давным-давно я добавил grails.gorm.failOnError=true
в свой Config.groovy для своего приложения, так что я никогда больше об этом не думаю, но, конечно, его не читают для юнит-тестов
По моему мнению, это делает эту подпись mockDomain очень хрупкой (и я не мог найти способ установить failOnError = true).Я переключил настройку фиктивных данных на следующую, которая дает точно такой же результат, но дает немедленный сбой, если вы неправильно настроили свои данные.
@Mock(MyUser)
class MyServiceTests {
...
void testMyThing() {
new MyUser(username: "email@gmail.com",
accountType: UserType.STANDARD,
id: 1L).save(failOnError:true) //throws exception because MyUser requires password field to be non blank
...
}
}