Блок контроллеров Grails - PullRequest
0 голосов
/ 05 июля 2018

Может кто-нибудь сказать мне, что означает контроллер в controller .searchService, controller .search () и controller .response. text.contains относится к? Как создается этот объект контроллера и какова его цель?

import grails.test.mixin.TestFor
import spock.lang.Specification
@TestFor(BookController)
@Mock(Book)
class BookControllerSpec extends Specification {

    void "test search"() {
        given:
        def searchMock = mockFor(SearchService)
        searchMock.demand.searchWeb { String q -> ['first result', 'second result'] }
        searchMock.demand.static.logResults { List results ->  }
        controller.searchService = searchMock.createMock()

        when:
        controller.search()

        then:
        controller.response.text.contains "Found 2 results"
    }
}

1 Ответ

0 голосов
/ 05 июля 2018

controller - это экземпляр тестируемого контроллера, указанный в аннотации @TestFor. В данном случае это BookController. Он создан Grails для использования в ваших юнит-тестах.

controller.searchService - это ссылка BookController на bean-компонент SearchService, который вы насмехаетесь в данном блоке.

controller.search() вызывает действие search BookController.

controller.response.text - текстовый вывод, который действие записывает в ответ.

Документы по тестированию предназначены для новейшей, основанной на Trait версии фреймворка тестирования, но концепции остаются теми же.

...