Rails 3 - Как проверить модуль контроллера? - PullRequest
4 голосов
/ 04 августа 2011

У меня есть 3 контроллера, которые включают в себя один и тот же модуль.

Как я могу проверить с помощью Test: Объединить модуль в одном месте?

Должен ли я написать 3 идентичных функциональных теста для каждого контроллера (не DRY)?

TestController / TestController1 / TestController2:

class TestController < ApplicationController
 include TestModule

 test_module :test, :only => [:index]
 ...
end

TestModule:

module TestModule
 extend ActiveSupport::Concern

 module ClassMethods
  private

  def test_module(resource, options = {})
   self.before_filter(options.slice(:only, :except)) do
     puts 'test_module'
   end
  end
 end
end

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 04 августа 2011

Тесты контроллера должны проверять именно этот ... контроллер.Поэтому любые тесты, которые вы пишете для контроллера, должны проверять, что действия контроллера выполняют именно то, что вы ожидаете, независимо от того, какие модули вы включили для них, чтобы они делали то, что они делают.Рассматривайте их как черный ящик, все, что вас волнует, - это дать контроллеру какие-то входные данные, а затем проверить, являются ли выходы такими, какими они должны быть.

Вы должны проверить модуль как его собственную сущность, написать макеты и тестыпроверить каждый метод модуля достаточно.Ваши контроллеры могут измениться в будущем, поэтому вы всегда будете иметь тестовое покрытие для модуля.

0 голосов
/ 05 августа 2011

Возможно, вы захотите научиться использовать стандартные инструменты, такие как RSpec, для тестирования контроллеров.

Вот ссылка на Ryan Bates 'Railscast

...