gpt4 book ai didi

ruby-on-rails - 使用 accepts_nested_attributes_for 为 FactoryGirl 对象生成嵌套属性

转载 作者:数据小太阳 更新时间:2023-10-29 07:59:15 25 4
gpt4 key购买 nike

我正在使用 RSpec 和 Factory Girl 来测试我的应用程序。我想做的是:我有一个接受嵌套属性的对象,但该嵌套属性无效。我想测试 POST 是否有效:

let(:valid_attributes) { build(:user).attributes }
it "creates a new User" do
expect {
post :create, {user: valid_attributes}, valid_session
}.to change(User, :count).by(1)
end

那是工厂:

FactoryGirl.define do
factory :user do |x|
name "Homer"
after(:build) do
build :address
end
end
end

问题是 build(:user).attributes 返回的散列没有 address,尽管如果我检查 build 创建的对象(:user)address 已正确构建。

有没有什么方法可以轻松生成具有嵌套属性的散列?

最佳答案

回答自己以展示技术上可行的解决方案:

let(:valid_attributes) {attributes_for(:user, address_attributes: attributes_for(:address))}

这行得通,但我觉得它很笨重。在复杂的情况下,代码会变得非常冗长和丑陋。正如我所期望的那样,我不会将此作为解决方案投票。

关于ruby-on-rails - 使用 accepts_nested_attributes_for 为 FactoryGirl 对象生成嵌套属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32699876/

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