У меня есть действие контроллера, которое выглядит так
//An action inside itemUserController
def commentItem() {
String comment = params['itemComment']
User user = session['currentUser']
String title = params['title']
def isBook = false, isTVShow = false, isMovie = false
//I do some manips here......
//and finally...
if(isBook)
redirect(controller: "book", action: "show", id: book.id)
if(isMovie)
redirect(controller: "movie", action: "show", id: movie.id)
if(isTVShow)
redirect(controller: "TVShow", action: "show", id: tvShow.id)
}
Моя проблема заключается в тестировании этого, опробованного в модульных тестах, а также в интеграции, но у меня такая же ошибка «NullPointerException» в строках, содержащих перенаправление (похоже, что контроллеры книги, фильма и TVShow внутри перенаправления равны нулю, и я понятия не имею, как введите их, поскольку они не являются полями в классе контроллера).
java.lang.NullPointerException
at ivvq.ItemUserController.$tt__commentItem(ItemUserController.groovy:138)
Вот моя часть кода в тестовом классе:
when: "User tries to comment an item with an empty comment title and an empty comment text"
itemUserController.session['currentUser'] = user;
itemUserController.params['itemComment'] = ""
itemUserController.params['title'] = ""
itemUserController.params['itemBookId'] = book.id
itemUserController.commentItem()
then: "The user has an error message and the comment isnt posted"
itemUserController.flash.error != ""
Вкратце, то, что я собираюсь сделать, это позволить пользователю комментировать элемент и отображать тот же элемент, прокомментированный после отправки комментария.
NB: я использую Grails 2.3.11