RSpec请求测试 - 登录无效

时间:2015-06-25 20:20:04

标签: ruby-on-rails ruby rspec factory-bot

我正在尝试完成RSpec请求规范,但我遇到了问题。

有人可以向我解释为什么下面的测试按预期工作:

require 'rails_helper'

RSpec.describe "RegisteredApplication", :type => :request do

  let(:user) { FactoryGirl.create(:user) }

  it "should create an application" do

    login_as(user, :scope => :user)
    post "/registered_applications", registered_application: { name: "My new App", url: "www.newapp.test" }
    expect(response).to have_http_status(:found)
  end
end

但是此测试失败并出现以下错误:失败/错误:删除" / registered_applications / 1"      NoMethodError:        注册应用程序的未定义方法调用:0x007f950f19b850

require 'rails_helper'

RSpec.describe "RegisteredApplication", :type => :request do

  let(:app) { FactoryGirl.create(:registered_application) }
  let(:user) { app.user }

  it "should create an application" do

    login_as(user, :scope => :user)

    post "/registered_applications", registered_application: { name: "My new App", url: "www.newapp.test" }
  end
end

规格/工厂/ registered_applications.rb

FactoryGirl.define do
  factory :registered_application do
    name 'My newest application'
    url 'www.mynewestapp.test'
    user
  end
end

规格/工厂/ users.rb的

FactoryGirl.define do
  factory :user do
    name "Jack Sparrow"
    email { Faker::Internet.email }
    password "helloworld"
    password_confirmation "helloworld"
    confirmed_at Time.now
  end
end

我的RegisteredApplication模型有validates :user, presence: true。这就是我创建一个let(:user) { FactoryGirl.create(:user) }用户,签署该用户,然后手动输入发布请求的原因。为了尝试保持干燥,我决定在user工厂中设置registered_applications_spec.rb关联,现在我不断收到上面列出的错误。关于为什么第一次测试通过而我的第二次重构测试失败的任何想法?

1 个答案:

答案 0 :(得分:0)

在这里回答我自己的问题。事实证明我所要做的就是改变:

let(:app) { FactoryGirl.create(:registered_application) }

let(:any_other_name) { FactoryGirl.create(:registered_application) }

事实证明,app方法在请求规范所需的地方使用。