Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Grails: интеграционное тестирование с несколькими/префиксными параметрами, например. (параметры [книга])

Автор вопроса: DaxonОтветов: 1

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

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

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

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()

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

  • Это точно интеграционный тест? Возможно, просто используйте MockDomain и MockController с функциональными или модульными тестами. grails.org/Testing+Controllers mfloryan 22.09.2010
  • нет, потому что я использую оперативную базу данных и другие методы обслуживания в рамках действия saveBook. Я дал только небольшой фрагмент, чтобы донести идею, так что вы знаете, как установить параметры с префиксом в bookController? Daxon 22.09.2010

integration-testingtestinggrailsgroovyparams

Ответы

Ответ 1 · рейтинг 4 · ataylor

Для работы пространства имен 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()

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы