Rspec 控制器测试未命中我的控制器操作

Roc*_*uy3 4 ruby rspec ruby-on-rails

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
Run Code Online (Sandbox Code Playgroud)

当我在导入操作中添加puts语句(包括第一行)时,显然没有调用它们。除了断言失败之外,测试不会生成任何错误。同样,当我查看 test.log 文件时,所发生的只是创建我的测试用户(并且发送了一封设计确认电子邮件),但似乎并没有执行导入操作。测试服务器似乎可以很好地识别该路由,但它实际上并未执行该操作。

我的测试配置有问题吗?

Roc*_*uy3 5

我已经敲了好几个小时的头了,但我刚刚想通了。我需要在我的用户工厂中确认用户。我想因为我confirmable在设计中启用了模块,并且用户没有得到确认,所以它默默地不允许我进行身份验证......

...如果 rspec/rails/devise 生成某种错误来指出我这里的问题,那就太好了。

为了完整起见,我在撰写本文时的 FactoryGirl 版本中添加了用于确认用户的代码:

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