2011-05-26 3 views
0

У меня странная ситуация: файл rspec не работает при запуске независимо, но работает нормально, когда выполняется как часть всего пакета.Неопределенный метод «действие», выполняющий одиночный файл RSpec для контроллера рельсов

Failure/Error: visit oauth_callback_path 
    NoMethodError: 
     undefined method `action' for MyController:Class 
    # <internal:prelude>:10:in `synchronize' 
    # ./spec/requests/login_spec.rb:xx:in `block (5 levels) in <top (required)>' 
    # ./spec/requests/login_spec.rb:xx:in `block (4 levels) in <top (required)>' 

Упрощенная спецификация:

require 'spec_helper' 

class MyController 
    def oauth_response 
    sign_in(
     ENV['TEST_ACCESS_TOKEN'], 
     ENV['TEST_ACCESS_SECRET']) 
    redirect_to root_path 
    end 
end 


describe 'logging in' do 
    it 'login' do 
    visit oauth_callback_path 
    response.should be_success 
    end 
end 
+0

Как выглядит ваш маршрут для 'oauth_callback_path'? –

+0

basic 'match 'oauth_callback' => 'my # oauth_response'' –

ответ

0

class MyController по-видимому, блокирует Rails магии загрузки классов. Либо тест должен явно require контроллер, или расширение должно быть определено с MyController.class_eval

2

Я считаю, что проблема заключается в том, что MyController не простирающийся ApplicationController. Поэтому метод action не определен для MyController.