У меня есть вопрос о тестировании Споком метода list() в контроллере. Я также перехожу с Grails 1.x на Grails 2.3.9. Вопрос в том, как мне сделать так, чтобы фиктивный объект, который я создаю, был виден контроллеру, чтобы при вызове list() он увидел фиктивный объект.
Вот код тестируемого контроллера:
class XxCatalogFormController {
def list() {
params.max = Math.min(params.max ? params.int('max') : 10, 100)
[dpCatalogFormInstanceList: XxCatalogForm.list(), dpCatalogFormInstanceTotal: XxCatalogForm.count()]
}
Вот тест Спока, который у меня есть:
@TestFor(XpCatalogFormController)
@Mock([XxCatalogForm, DpCatalog])
@TestMixin(GrailsUnitTestMixin)
class XpCatalogFormControllerSpec extends Specification {
def 'list action: 1 dpCatalogForm'() {
setup:
mockDomain(XxCatalogForm, [dpCatalogFormInstance])
mockDomain(DpCatalog, [catalog])
params.max = 1
when:
expect:
controller.list() == [dpCatalogFormInstanceList: [dpCatalogFormInstance], dpCatalogFormInstanceTotal: 1]
where:
catalog = new DpCatalog(name: 'TestCatalog')
dpCatalogFormInstance = new XxCatalogForm(url: 'catalog_testForm.gsp',
catalog: catalog, confirmMessage: 'test', introBannerUrl: '/site/test.gsp',
successUrl: 'test.gsp', name: 'test')
}
И вот результат теста:
Condition not satisfied: controller.list() == [dpCatalogFormInstanceList: [dpCatalogFormInstance], dpCatalogFormInstanceTotal: 1] | | | | | | false com.kpi.dp.catalog.XxCatalogForm : (unsaved) | [dpCatalogFormInstanceList:[], dpCatalogFormInstanceTotal:0] com.kpi.dp.catalog.XxCatalogFormController@784f6502
junit.framework.AssertionFailedError: Condition not satisfied:
controller.list() == [dpCatalogFormInstanceList: [dpCatalogFormInstance], dpCatalogFormInstanceTotal: 1]
| | | |
| | false com.kpi.dp.catalog.XxCatalogForm : (unsaved)
| [dpCatalogFormInstanceList:[], dpCatalogFormInstanceTotal:0]
com.kpi.dp.catalog.XxCatalogFormController@784f6502
at com.kpi.dp.catalog.XxCatalogFormControllerSpec.list action: 1 dpCatalogForm(XxCatalogFormControllerSpec.groovy:64)