Rspec控制器测试没有触发我的控制器动作。

4

我在一个控制器中添加了一个import方法,当我手动从我的网站测试它时,它运行得很好,但是在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文件时,所有发生的事情都只是创建我的测试用户(并发送确认电子邮件),但似乎从未触发导入操作。测试服务器似乎正确识别了路由,但实际上并没有执行该操作。
是否有我的测试配置存在问题?
1个回答

5
我一直在努力解决问题,花了好几个小时,但我终于找到解决方法。我需要在我的用户工厂中确认用户。我猜可能是因为我在设备(devise)中启用了“confirmable”模块,而用户没有被确认,所以它默默地不允许我进行身份验证...
...如果rspec/rails/devise能够生成某种指向这里问题的错误提示,那将非常好。
为了完整起见,我在此添加了确认用户的代码,这是当时编写的FactoryGirl版本:
FactoryGirl.define do
  factory :confirmed_user, :parent => :user do
    after(:create) { |user| user.confirm! }
  end
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接