gpt4 book ai didi

ruby-on-rails - 如何使用 rspec 和 factory girl 创建具有特定 id 的模型

转载 作者:行者123 更新时间:2023-12-03 23:26:27 25 4
gpt4 key购买 nike

我用:

gem 'rails', '3.2.11'
gem 'rspec-rails', '2.13.2'
gem 'webrat', '0.7.3'
gem 'factory_girl_rails', '4.1.0'
gem 'spork', '~> 0.9.0.rc'

我想测试我的 HP,我总是有一个指向某个用户的链接,所以 HP 的页面 Controller 包含:
@user = User.find(7)

并且 View HP 包含:
link_to 'See user', @user

问题是所有测试都失败了,因为测试数据库没有 id 为 7 的用户。我试过:
FactoryGirl.define do
factory :user do
name "Testuser"
id "7"
end
end

......但这不起作用。总是有错误:

规范是这样的:
describe "GET 'home'" do

before(:each) do
FactoryGirl.create(:user)
end

it "should be successful" do
get 'home'
response.should be_success
end
end

失败/错误:得到“家”
ActiveRecord::RecordNotFound:
找不到 id=7 的用户

惠普在现实中工作正常,只是测试失败。我怎样才能保证这个测试不会失败?

最佳答案

模拟/ stub 怎么样(不将对象保存到数据库时规范要快得多):

let(:user) { FactoryGirl.build(:user) }
let(:id) { '1' }

before do
user.stub(:id).and_return(id) # just to illustrate, not necessary if stubbing the find class method
User.stub(:find).and_return(user)
end

it { expect(user.id).to eq(id) } # just to illustrate
it { expect(response).to be_success }
it { expect(assigns(:user)).to eq(user) }

如果您仍然对仅实例化用户有问题,您仍然可以使用上述技术但替换 FactoryGirl.build(:user)来自 FactoryGirl.create(:user)

关于ruby-on-rails - 如何使用 rspec 和 factory girl 创建具有特定 id 的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17728431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com