Как проверить метод контроллера с помощью 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, потому что, как я думаю, это не метод действий, а закрытый или защищенный.

Методы действий протестированы таким образом