2016-01-21 183 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