Интеграционный тест Grails: ошибка ... Не удается вызвать метод addToPosts () для нулевого объекта - PullRequest
0 голосов
/ 23 апреля 2011

: D Я следовал учебнику в книге, и я действительно следовал ему.Однако, когда я должен был написать интеграционный тест, он вдруг не смог сказать: Cannot invoke method addToPosts() on null object сразу после того, как я запустил тест.Интересно, что может быть не так ...: |Пожалуйста помоги!:) Ниже приведен код для теста:

void testFirstPost() {
   def user = new User(userID: 'joemillan', password:'youaretheonly',
                       homepage: 'www.geeee.com').save()

   def post = new Post (content: 'hellloo oasdo sjdosa daodkao ')
   user.addToPosts(post)

   assertEquals 1, User.get(user.id).posts.size()
}

Вот класс пользователя:

class User {

   String userID
   String password
   String homepage

   Profile profile

   static hasMany=[posts:Post, tags:Tag]

   static constraints = {
      userID (unique: true, size: 6..20)
      password (size: 6..20, validator:{password,userID-> return password !=userID.userID}) //validator = The password must not match the username.
      homepage (url:true, nullable: true)
      profile (nullable: true)
   }
}

Вот класс Post:

class Post {

   String content
   Date dateCreated

   static constraints = {
      content (blank:false)
   }

   static belongsTo = [user:User]
   static hasMany = [tags:Tag]

   static mapping = {
      sort dateCreated: "desc"
   }
}

1 Ответ

2 голосов
/ 23 апреля 2011

save() возвращает ноль, если проверка не удалась, а "www.geeee.com" не является действительным URL.Это будет работать с "http://www.geeee.com".

. Но вы должны разделить создание и сохранение на 2 шага, чтобы вы могли проверить это:

def user = new User(userID: 'joemillan', password:'youaretheonly',
                    homepage: 'www.geeee.com')
user.save()
assertFalse user.hasErrors()

или использовать failOnError, если вы уверены, что эта часть должна быть успешной ихочу проверить только другие детали, например

def user = new User(userID: 'joemillan', password:'youaretheonly',
                    homepage: 'www.geeee.com').save(failOnError: true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...