2017-06-29 33 views
6

Yükseltdiğimiz gerçekten eski bir Rails 2.3.18, ruby ​​1.9.3, rspec 1.x uygulamasına sahibiz ve içinde restful-authentication vardı. Ben de bunu Devise 1.0.11 ile değiştirdim.RSpec 2.3 + Devise 1.0.11

Uygulamaya giriş yapabilirim, ancak testlerim çalışmayacak; İşte

alıyorum hata İşte

require 'spec_helper' 

describe CategoriesController do 
    context "As a logged in user" do 
    before do 
     login_user 
     current_firm = mock_model(Firm, :id => 1) 
     controller.stub!(:current_firm).and_return(current_firm) 
    end 

    describe "#index" do 
     it "should render index" do 
     get :index 
     response.should render_template('index') 
     end 
    end 

    end 
end 

söz konusu deney olduğunu;

NoMethodError in 'CategoriesController As a logged in user#index should render index' 
You have a nil object when you didn't expect it! 
You might have expected an instance of ActiveRecord::Base. 
The error occurred while evaluating nil.[]= 
/home/map7/code/pdfcat/spec/spec_helper.rb:18:in `login_user' 
spec/controllers/categories_controller_spec.rb:6:in `block (3 levels) in <top (required)>' 

Hata bu satırda gerçekleşir;

[20, 29] in /usr/local/rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/warden-0.10.7/lib/warden/session_serializer.rb 
    20  key 
    21  end 
    22 
    23  def store(user, scope) 
    24  return unless user 
=> 25  session[key_for(scope)] = serialize(user) 
    26  end 

Sorun şu ki, bu noktada olduğumda 'oturum' geçersizdir.

Burada tam kodu itti ettik: https://github.com/map7/pdfcat/tree/devise

planım olsun sonra ben Raylar 3.0 atlamak ve yükseltme devam edebilir testlerde çalışma bulmaktı.

+0

sınamalarının, spec_helper.rb dosyasındaki sing_in yönteminde olduğunu düşünüyorum. Bu yöntemin yeni versiyonda bu yöntemi değiştirdiğini düşünüyorum. Bence oturum enil –

+0

testinde nil olmalıdır. Sign_in bir parçası olsa da sanırım doğru diyorum. – map7

cevap

1

Bence google gruplarında eski mesajı alakalı Orada mi: Bu kullanılmasını önerir https://groups.google.com/forum/#!topic/rspec/4AHuPtHFD34

: herkes için çalışacak şekilde

before do 
    request.env['warden'].stub(:authenticate!) { double(User) } 
end 

Muhtemelen rails_helper.rb koyarlardı

+0

Bunu, test dosyamın önceki blcok'una koyarken 'donmuş nesneyi değiştiremiyorum' hatası alıyorum. Eğer rails_helper içine koydum bir hata alıyorum nilClass 'istek' nesnesine atıfta env çağrısı yapamıyorum. – map7