我正在测试rspec,factory_girl和水豚。该项目采用设计,我有以下方法的规格内登录:未定义的方法`祖先'与rspec测试的PUT
def login_admin
before(:each) do
@request.env["devise.mapping"] = Devise.mappings[:admin]
sign_in FactoryGirl.create(:admin)
end
end
def login_user
before(:each) do
@request.env["devise.mapping"] = Devise.mappings[:user]
sign_in FactoryGirl.create(:user)
end
end
然后我就companies_controller_spec进行测试:
require 'spec_helper'
describe CompaniesController, :type => :controller do
let(:valid_attributes) { { "email" => Faker::Internet.email } }
login_admin
describe "GET show" do
it "assigns the requested company as @company" do
company = FactoryGirl.create(:company)
get :show, {:id => company.to_param}
expect(assigns(:company)).to eq(company)
end
end
describe "GET edit" do
it "assigns the requested company as @company" do
company = FactoryGirl.create(:company)
get :edit, {:id => company.to_param}
expect(assigns(:company)).to eq(company)
end
end
describe "PUT update" do
describe "with valid params" do
it "updates the requested company" do
company = FactoryGirl.create(:company)
expect_any_instance_of(company).to receive(:update).with({ "email" => "[email protected]" })
put :update, {:id => company.to_param, :company => { "email" => "[email protected]" }}
end
end
end
但我不断收到这两个错误:
NoMethodError:
undefined method `ancestors' for #<Company:0x000000059b41f0>
# ./spec/controllers/companies_controller_spec.rb:34:in `block (4 levels) in <top (required)>'
line 34: expect_any_instance_of(company).to receive(:update).with({ "email" => "[email protected]" })
和
expected: #<Company id: 86...
got: nil
# ./spec/controllers/companies_controller_spec.rb:41:in `block (4 levels) in <top (required)>'
line 41: expect(assigns(:company)).to eq(company)
这是我公司的工厂:
FactoryGirl.define do
factory :company do
name { Faker::Name.name }
plan_id {}
phone { Faker::PhoneNumber.phone_number }
email { Faker::Internet.email }
facebook { Faker::Internet.url('facebook.com') }
twitter { Faker::Internet.url('twitter.com') }
linkedin { Faker::Internet.url('linkedin.com') }
web { Faker::Internet.url }
end
end
堆栈跟踪会很好:) – 2014-09-24 17:49:17
已添加@KyleMacey!主要问题。 – ntonnelier 2014-09-24 18:03:39