Как проверить метод контроллера с помощью rspec?
Я пытаюсь изучить rspec. Я не могу проверить метод контроллера рельсов. Когда я вызываю метод в тесте, rspec просто возвращает ошибку метода undefined. Вот мой тестовый пример
it 'should return 99 if large' do
GamesController.testme(1000).should == 99
end
и вот ошибка:
Failure/Error: GamesController.testme(1000).should == 99
NoMethodError:
undefined method `testme' for GamesController:Class
У меня есть метод testme в GameController. Я не понимаю, почему тестовый код не может видеть мои методы.
Любая помощь приветствуется.
Ответы
Ответ 1
Я думаю, что правильный путь:
describe GamesController do
it 'should return 99 if large' do
controller.testme(1000).should == 99
end
end
В спецификации контроллера rails, когда вы помещаете класс контроллера в describe
, вы можете использовать метод controller
для получения экземпляра: P
Очевидно, что если метод testme
является закрытым, вам все равно придется использовать controller.send :testme
Ответ 2
Вы пытаетесь протестировать метод класса, но у контроллера есть метод экземпляра
Вам нужно GamesController.new.testme(1000).should == 99
Или даже GamesController.new.send(:testme, 1000).should == 99
, потому что, как я думаю, это не метод действий, а закрытый или защищенный.
Методы действий протестированы таким образом