gpt4 book ai didi

ruby-on-rails - 我无法使用 RSpec 2 和 FactoryGirl 保存对象

转载 作者:行者123 更新时间:2023-12-02 02:14:59 26 4
gpt4 key购买 nike

我有以下规范:

  it "saves a default 'active' status if not specified" do
if User.count <= 0
user = User.new(FactoryGirl.attributes_for(:user))
user.save
end

project = FactoryGirl.create(:project, :status => nil)
project.status.should eq("active")
end

有了这个 FactoryGirl 对象:

  factory :project do
title "A short title"
description "A short description"
parent_id 1
pm_id 1
status "active"
end

该项目的模型验证了关联的存在...因此,在测试之前,我想在测试数据库中保存一个用户。但是上面的代码不会在数据库中保存任何内容。

相反,如果我添加一个 before(:all) block :

之前(:所有)做 @user = User.new(FactoryGirl.attributes_for(:user)) @user.保存 结束

一个新用户被保存到数据库中。为什么?

最佳答案

如果在您的模型中,项目属于用户,那么您可以让 factory girl 在创建项目时简单地创建一个用户。您只需将您的项目工厂更新为

factory :project do
title "A short title"
description "A short description"
parent_id 1
pm_id 1
status "active"
user
end

我认为这与您上面的代码具有相同的效果。

其次,在上面的代码中,您似乎在任何时候都没有将项目与用户相关联。 (当然假设 pm_id 或 parent_id 都不是指用户,在这种情况下我可以建议您不要对 id 做出假设并改用上面的方法:-)

关于ruby-on-rails - 我无法使用 RSpec 2 和 FactoryGirl 保存对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11072774/

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