Удалить зависимость класса домена от теста модуля контроллера - PullRequest
0 голосов
/ 11 марта 2011

У меня есть контроллер, который должен работать с классами домена в моем приложении, но ему все равно, с каким типом домена он работает.Я хотел бы написать модульные тесты, чтобы убедиться, что он отвечает правильно, но я не хочу связывать его с классом домена в моем приложении в случае изменения или удаления класса домена.Примерно так:

void testReadNoItems() {
    mockDomain(Item)

    controller.params["class"] = "DefaultGrailsDomainClass"
    controller.params.xaction = "read"
    controller.index()

    def json = JSON.parse(controller.response.contentAsString)

    assert json.metaData.root == "data"
    assert json.metaData.totalProperty == "total"
    assert json.metaData.successProperty == "success"
    assert json.metaData.idProperty == "id"
    assert json.metaData.fields[0].id == "int"
    assert json.metaData.fields[1].name == "string"
    assert json.data == []
    assert json.total == 0
}

Есть ли способ удалить зависимость от класса предметного домена?

1 Ответ

1 голос
/ 11 марта 2011

Если вы удалите все ссылки на Item из контроллера, вы можете создать ItemService (который является транзакционным) и вставить его в контроллер.Оттуда вы можете оставить ItemService относительно фиксированным и смоделировать его в контроллере.

Тест:

protected void setUp(){
   controller.itemService = [retrieveItems: { arg -> return [new Item()] }] as ItemService
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...