gpt4 book ai didi

ruby-on-rails - 命名空间类的 FactoryGirl 工厂

转载 作者:数据小太阳 更新时间:2023-10-29 06:54:57 26 4
gpt4 key购买 nike

非常感谢任何证明或反驳我的想法的文档链接;我好像找不到。

据我所知,如果您有一个带有 Product 模型的 Rails 应用程序,您可以将 FactoryGirl 工厂定义为

FactoryGirl.define do
factory :product do
# stuffs
end
end

然后使用(RSpec 示例)调用您的工厂进行测试

let(:product) { FactoryGirl.create(:product) }

但你也可以调用它

let(:product) { FactoryGirl.create(Product) }

如果您希望使用 RSpec 的 described_class 帮助程序让您的模型测试更加动态并且可以自由更改,这将很有帮助。

我的问题:

我有一个恰好是命名空间的模型

class Namespace::MyModel < ActiveRecord::Base
# model stuffs
end

有工厂

FactoryGirl.define do
factory :my_model, class: Namespace::MyModel do
# factory stuffs
end
end

并且在尝试使用 RSpec 的助手时...

RSpec.describe Namespace::MyModel do
let(:my_object) { FactoryGirl.create(described_class) }
# testing stuffs
end

FactoryGirl 提示找不到工厂

Factory not registered: Namespace::MyModel

我是否在不了解其真正用途的情况下错过了 FactoryGirl 的这个功能?还是有另一种方法可以定义我的工厂以正确解析?

最佳答案

你为什么不试试

RSpec.describe Namespace::MyModel do
let(:my_object) { FactoryGirl.create(:my_factory) }
# testing stuffs
end

FactoryGirl 通常用于工厂名,而不是类名,即定义。

您可以拥有多个定义同一类实例的工厂。例如,它们之间的区别可能在于字段值。

或者您可以从 described_class 名称中动态获取工厂名称。已在 How do you find the namespace/module name programmatically in Ruby on Rails? 得到解答

关于ruby-on-rails - 命名空间类的 FactoryGirl 工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28223308/

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