factory_bot
はフィクスチャを交換します、簡単な定義構文を使って、複数構築戦略(保存されたインスタンス、保存しないインスタンス、属性ハッシュそしてスタブオブジェクト)をサポートしfactory
を継承を含む同じクラス(ユーザー、管理者ユーザーなど)の複数のfactory
をサポートする。
factory_bot is a fixtures replacement with a straightforward definition syntax, support for multiple build strategies (saved instances, unsaved instances, attribute hashes, and stubbed objects), and support for multiple factories for the same class (user, admin_user, and so on), including factory inheritance.
factory_bot book内の豊富なリファレンス、ガイドそしてクックブックを見てください
See our extensive reference, guides, and cookbook in the factory_bot book.
RSpecまたはRailsなどのサードバーティライブラリと統合した情報はfactory_bot wiki
を見てください
For information on integrations with third party libraries, such as RSpec or Rails, see the factory_bot wiki.
詳細な紹介映像も持っている。Upcase(サイト名)で無料で見られる
We also have a detailed introductory video, available for free on Upcase.
構築戦略
Build strategies
一度factory_bot
factoryは定義された。内蔵のbuild strategies
またはカスタムのbuild strategy
を使って建設することができる。
Once a factory_bot factory is defined, it can be constructed using any of the built-in build strategies, or a custom build strategy.
それらのstrategiesの全てがActiveSupport::Notifications
を使ってfactory_bot.run_factory
インストルンメンテーションに通知し、:name
、:strategy
、:traits
、:overrides
、:factory
キー付きのペイロードを渡せます
All of these strategies notify on the factory_bot.run_factory instrumentation using ActiveSupport::Notifications, passing a payload with :name, :strategy, :traits, :overrides, and :factory keys.
リスト以外のメソッド(.build, .build_pair, .create, など)は義務的な引数(ファクトリーの名前の一つ)を取る。それらはオプションで特性の名前をとり、オーバーライドするハッシュの属性と特性の名前を取ることができる。最後に、それらはブロックを取ることができる。このブロックは生成されたオブジェクトを取り、更新されたオブジェクトを返す。
The non-list (.build, .build_pair, .create, etc.) methods take one mandatory argument: the name of the factory. They can then optionally take names of traits, and then a hash of attributes to override. Finally, they can take a block. This block takes the produced object as an argument, and returns an updated object.
リストのメソッド(.build_list, .create_list, など)は二つの引数:ビルドするインスタンスの数とfactoryの名前を必要とします。オプションでオーバーライドと特性を取れる。最後にブロックを取ることができる。このブロックは引数として生成されたオブジェクト、ゼロベースのインデックスを取り、更新されたオブジェクトを返します。
The list methods (.build_list, .create_list, etc.) have two required arguments: the name of the factory, and the number of instances to build. They then can optionally take traits and overrides. Finally, they can take a block. This block takes the produced object and the zero-based index as arguments, and returns an updated object.
ビルドする
build
FactoryBot.build
メソッドはinitialize_with
に従ってクラスのインスタンスを組み立て、デフォルトでは.new
クラスメソッドを呼ぶ。build_list
は複数のインスタンスを構築し、build_pair
は二つのインスタンスを構築する省略記法です。
The FactoryBot.build method constructs an instance of the class according to initialize_with, which defaults to calling the .new class method. .build_list constructs multiple instances, and .build_pair is a shorthand to construct two instances.
initialize_with
を呼んだ後、after_build
フックに頼る
After it calls initialize_with, it invokes the after_build hook.
`アソシエーション(連携)は建築戦略を使って構築される。
Associations are constructed using the build build strategy.