2016-01-21 260 views
3

我添加了一個import方法到控制器,它工作得很好,當我從我的網站手動測試它,但它在rspec中失敗。下面是我的測試樣子:Rspec控制器測試不打我的控制器動作

require 'spec_helper' 

describe PropertiesController do 
    let!(:user) { FactoryGirl.create(:user) } 

    before :each do 
    sign_in user 
    end 

    describe "should upload user properties" do 
    before do 
     post :import, spreadsheet: fixture_file_upload("/files/property_upload_template.xlsx") 
    end 

    it "should have created records" do 
     expect(Property.count).to eq 3 
     # Some other assertions 
    end 
    end 
end 

當我添加puts陳述我的導入動作裏面,包括在第一行,沒有人顯然調用。測試不會產生錯誤,除了斷言失敗之外。同樣,當我查看test.log文件時,所發生的一切就是創建我的測試用戶(併發送了一個設計確認電子郵件),但似乎並未出現導入操作。測試服務器似乎認識到路由正常,但它並未實際執行該操作。

我的測試配置有問題嗎?

回答

3

我幾個小時都在敲我的腦袋,但我只是想通了。我需要confirm the user in my user factory。我想因爲我在設計中啓用了confirmable模塊,並且用戶未被確認,所以它默默無法讓我進行身份驗證...

...如果rspec/rails/devise生成某種排序,肯定會很好的錯誤指向我這裏的問題。

爲了完整起見,我添加的代碼在寫作的時候證實了FactoryGirl的版本的用戶:

FactoryGirl.define do 
    factory :confirmed_user, :parent => :user do 
    after(:create) { |user| user.confirm! } 
    end 
end