У меня есть класс домена User:
class User extends AuditableEntity {
private static final long serialVersionUID = 1
String username
String password
String email
String googleId
String linkedinId
boolean enabled = true
boolean accountExpired
boolean accountLocked
boolean passwordExpired
Set<Role> getAuthorities() {
(UserRole.findAllByUser(this) as List<UserRole>)*.role as Set<Role>
}
static constraints = {
password nullable: true, blank: true, password: true
username nullable: false, blank: false, unique: true
email nullable: false, blank: false, unique: true
googleId nullable: true, blank: true, unique: true
linkedinId nullable: true, blank: true, unique: true
}
static mapping = {
password column: '`password`'
googleId column: 'google_id'
linkedinId column: 'linkedin_id'
}
static namedQueries = {
notDeleted {
isNull 'deletedAt'
}
}
}
Где AuditableEntity имеет только пустые поля.
У меня также есть простой класс обслуживания UserService:
@Transactional
class UserService {
@Transactional(readOnly = true)
User getByGoogleId(String googleId) {
def user = User.notDeleted.findByGoogleId(googleId)
user
}
}
Я пытаюсь написать модульный тест для класса обслуживания во время проверки домена пользователя:
class UserServiceSpec extends Specification implements ServiceUnitTest<UserService>, DataTest {
def setupSpec() {
mockDomain User
}
void "getByGoogleId"() {
setup:
new User(
username: "username",
googleId: "googleId",
email: "user@domain.com",
enabled: true,
accountExpired: false,
accountLocked: false,
passwordExpired: false
).save(failOnError: true)
when:
def user = service.getByGoogleId("googleId")
then:
User.count() == 1
user.username == "username"
}
}
Этот тест не пройден, поскольку по какой-то причине он не создает объект пользователя.User.count()
равно 0. Это не проблема проверки, так как нет ошибок проверки домена (они были раньше).
Что я делаю не так?