Grails: интеграционное тестирование с несколькими / префиксными параметрами, например (params ["book"]) - PullRequest
2 голосов
/ 22 сентября 2010

Я задал точно такой же вопрос по набле здесь

Я пытаюсь отправить параметры или другие домены в тесте интеграции контроллера. Но не может заставить их привязаться к классу домена с префиксом «book»

// Тестируемое действие контроллера

def saveBook = {
def book = new Book()
bindData(book, params["book"], [include: ['publicPrivacy', 'description', 'title'])
}

// Интеграционный тест -

def bookController = BookContoller()
//Doesn't Bind
bookController.params.publicPrivacy = false
bookController.params.description = "Best book in the world"
bookController.params.title = "The world"

bookController.params.book.publicPrivacy = false
bookController.params.book.description = "Best book in the world"
bookController.params.book.title = "The world"

bookController.params["book"].publicPrivacy = false
bookController.params.[book.description] = "Best book in the world"

bookController.saveBook()

как мне установить "params" с префиксом, который будет отправлен на контроллер, чтобы они связывались с доменом?

1 Ответ

4 голосов
/ 22 сентября 2010

Чтобы пространство имен params работало, мне пришлось использовать org.codehaus.groovy.grails.web.servlet.mvc.GrailsParameterMap для объекта params.Например:

def p = ['book.description': "Best book in the world", ...]
def request = [getParameterMap: { -> p }] as javax.servlet.http.HttpServletRequest

controller.params = new org.codehaus.groovy.grails.web.servlet.mvc.GrailsParameterMap(request)
controller.saveBook()
...