gpt4 book ai didi

ruby-on-rails - 从固定装置切换到工厂女孩

转载 作者:行者123 更新时间:2023-12-02 04:11:17 25 4
gpt4 key购买 nike

Rails 3.0.3 ....

我只是从Factory Girl开始,在使用标准灯具方法方面几乎没有成功。我已经从test / test_helper.rb文件中删除了fixtures :all,并创建了一个工厂文件。

我的问题是序列功能似乎不起作用:

# test/factories.rb
Factory.sequence :clearer_name do |n|
"Clearer_#{n}"
end

Factory.define :clearer do |f|
f.name Factory.next(:clearer_name)
end

我的(功能性)测试与标准测试仅稍有不同:
require 'test_helper'

class ClearersControllerTest < ActionController::TestCase
setup do
@clearer = Factory.create(:clearer)
end

test "should get index" do
get :index
assert_response :success
assert_not_nil assigns(:clearers)
end

test "should get new" do
get :new
assert_response :success
end

test "should create clearer" do
assert_difference('Clearer.count') do
post :create, :clearer => @clearer.attributes
end

assert_redirected_to clearer_path(assigns(:clearer))
end

当我运行 rake test时,我得到:
test_should_create_clearer(ClearersControllerTest):
ActiveRecord::RecordNotUnique: SQLite3::ConstraintException: column name is not unique: INSERT INTO "clearers" ("active", "updated_at", "name", "created_at") VALUES ('t', '2011-02-20 08:53:37.040200', 'Clearer_1', '2011-02-20 08:53:37.040200')

...好像没有继续执行该序列。

有小费吗?

谢谢,

更新:这是我的测试文件:
#clearers_controller_test.rb
require 'test_helper'
class ClearersControllerTest < ActionController::TestCase
setup do
@clearer = Factory.create(:clearer)
end

test "should create clearer" do

assert_difference('Clearer.count') do
# does not work without this:
Clearer.destroy_all
post :create, :clearer => @clearer.attributes
end
end

我可以通过将 Clearer.destroy_all放在所示的测试方法的顶部来使其工作,但这感觉不对。

最佳答案

我知道-在您的设置中,您正在创建一个Clearer实例。 Factory.create方法将生成并保存新记录并返回它。

问题在于您随后试图在“应该创建更清晰”的测试中创建另一个实例,但是您正在重新使用现有实例的属性。

如果要让Factory返回新属性(以及下一个名称序列),则需要向其询问新属性:

test "should create clearer" do
assert_difference('Clearer.count') do
post :create, :clearer => Factory.attributes_for(:clearer)
end
end

您只应在现有记录的上下文中使用该现有@clearer实例,而不要在需要新实例的位置使用它。

关于ruby-on-rails - 从固定装置切换到工厂女孩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5056100/

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