Bra*_*ice 8 ruby rspec ruby-on-rails factory-bot
任何证明或反驳我的想法的文件链接都将非常感激; 我似乎找不到任何东西.
AFAIK,如果您有一个带Product模型的Rails应用程序,您可以将FactoryGirl工厂定义为
FactoryGirl.define do
factory :product do
# stuffs
end
end
Run Code Online (Sandbox Code Playgroud)
然后在测试中调用工厂(RSpec示例)
let(:product) { FactoryGirl.create(:product) }
Run Code Online (Sandbox Code Playgroud)
但你也可以用它来打电话
let(:product) { FactoryGirl.create(Product) }
Run Code Online (Sandbox Code Playgroud)
如果您希望保持模型测试更加动态并且可以使用RSpec的described_class帮助程序自由更改,这将非常有用.
我的问题:
我有一个恰好是命名空间的模型
class Namespace::MyModel < ActiveRecord::Base
# model stuffs
end
Run Code Online (Sandbox Code Playgroud)
与工厂
FactoryGirl.define do
factory :my_model, class: Namespace::MyModel do
# factory stuffs
end
end
Run Code Online (Sandbox Code Playgroud)
当试图使用RSpec的助手时......
RSpec.describe Namespace::MyModel do
let(:my_object) { FactoryGirl.create(described_class) }
# testing stuffs
end
Run Code Online (Sandbox Code Playgroud)
FactoryGirl抱怨工厂丢失
Factory not registered: Namespace::MyModel
Run Code Online (Sandbox Code Playgroud)
我是否错过了FactoryGirl的这个功能,却没有理解它的真正目的?或者是否有另一种方法可以定义我的工厂以正确解析?
你为什么不尝试一下
RSpec.describe Namespace::MyModel do
let(:my_object) { FactoryGirl.create(:my_factory) }
# testing stuffs
end
Run Code Online (Sandbox Code Playgroud)
FactoryGirl通常使用工厂名称,而不是类名称,即定义。
您可以有多个工厂,它们定义同一类的实例。例如,它们之间的差异可能在于字段值。
或者您可以从描述的类名称动态获取工厂名称。在如何在 Ruby on Rails 中以编程方式查找命名空间/模块名称? 中已经对此进行了解答。
| 归档时间: |
|
| 查看次数: |
2579 次 |
| 最近记录: |