#ruby #rspec #request #ruby-on-rails-6
#ruby #rspec #запрос #ruby-on-rails-6
Вопрос:
Я пытаюсь проверить, что шаблон был отображен в тесте запроса (через Rspec), но я предпочитаю не добавлять драгоценный камень rails-controller-testing. Есть ли другая альтернатива?
expect(response).to render_template(:index) # add gem 'rails-controller-testing' to your Gemfile first.
Комментарии:
1. Почему вы не хотите использовать драгоценный камень? Он предназначен для решения именно этой проблемы, и это нетривиально .
2. Однако я бы, вероятно, предложил следующее: тестовое поведение , а не реализация . Почему важно, чтобы
index
шаблон отображался? Какое значение это имеет? Не могли бы вы протестировать что-то, что проверяет существенное поведение, вместо того, чтобы тестировать эту деталь реализации? Например, может быть, вы могли бы проверить, присутствует ли определенный элемент HTML в отображаемом теле ответа?3. Он был удален по какой-то причине, и я подумал, что есть лучшее рекомендуемое решение или метод для тестирования.
4. Я думал о тестировании определенного элемента на странице, но мог видеть ситуацию, когда я смотрю, что он содержит слово или фразу, которые также есть на другой странице, и они будут проходить, когда этого не должно быть.
5. Он был удален, потому что (цитируя основную команду rails) «тесты контроллера должны быть больше озабочены тем, что является результатом этого действия контроллера, например, какие установлены файлы cookie или какой установлен HTTP-код, а не тестирование внутренних компонентов контроллера». Другими словами, точно так, как я предложил: обычно считается лучшей практикой тестировать поведение , а не реализацию . Вопрос не должен быть «как я могу протестировать реализацию, не используя этот драгоценный камень, который проверяет реализацию?»