問題タブ [factory-bot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
7173 参照

ruby - ファクトリーガールからモックオブジェクトを返す

私はJRubyRailsアプリケーションでMochaとFactory_girlを使用しています。私が工場に電話するとき、私はすでにいくつかのモックが行われたオブジェクトを返したいと思います。これが私がやろうとしていることのコードスニペットです。

ユニットと機能テストが実際にTwitterAPIから取得されることを望まないため、メソッドをスタブ化して、必要なものを返すようにします。しかし、これは機能していません。オブジェクトはスタブを行わずに戻ってきます。ファクトリーガールで作成されたオブジェクトが返される前に、実際にスタブを実行する方法はありますか?

0 投票する
1 に答える
2259 参照

ruby-on-rails - factory girl の非アクティブレコード関連付けに関する問題

テスト中に、ファクトリーガールを使用してフィクスチャを交換し始めました。私は twitter クライアントに取り組んでおり、factory girl を使用してテスト用の twitter オブジェクトを作成しようとしています。個別に作成する場合は問題ありません。しかし、それらを関連付けようとすると、以下のエラーが発生します。

そこにあるとこのt.association :user, :factory => :twitter_user例外がスローされるため、問題が発生します。とにかくこれを修正する方法はありますか?それとも、factory girl はアクティブ レコード オブジェクト用に設計されているだけですか? ありがとう

0 投票する
6 に答える
10340 参照

java - Factory GirlのようなフレームワークはJava用に存在しますか?

Factory Girlは、テスト用のモデルのインスタンスを簡単に作成するためのレール内の便利なフレームワークです。

ファクトリーガールのホームページから:

factory_girlを使用すると、各モデルのプロトタイプをすばやく定義し、手元のテストにとって重要なプロパティを持つインスタンスを要求できます。

例(これもホームページから):

ユーザーが必要な場合は、

これにより、明示的に指定したadminプロパティを除いて、ファクトリプロトタイプで指定されたすべてのプロパティを持つユーザーが生成されます。また、電子メールファクトリメソッドは、呼び出されるたびに異なる電子メールを生成することに注意してください。

Javaに似たようなものを実装するのはかなり簡単なはずだと思いますが、車輪の再発明はしたくありません。

PS:私はJMockとEasyMocの両方について知っていますが、ここではモックフレームワークについて話していません。

0 投票する
1 に答える
1512 参照

ruby-on-rails - accepts_nested_attributes_forを使用してRoRファクトリの関連付けをどのように作成しますか?

アントンが指摘しているように(アントンに感謝します!)、私の問題はテストでのアソシエーションキャッシングであり、ファクトリでnested_attributeを正しく作成したようです。正しい構文は次のとおりです。


私はaccepts_nested__attributes_for自分のジョブモデルで使用しており、モデルを変更するたびにビー玉の「フィクスチャダイビング」をほぼ失った後、ファクトリーガールに移行しようとしています。

以下にたくさんのコードを投稿しましたが、私の質問は簡単です。

ファクトリを使用してnested_attributesを作成するにはどうすればよいですか?

以下のコードを使用してジョブインスタンスを作成できますが、単体テストで車両の作成を作成できません。私のジョブテストがないとf.vehicles_attributes...、検証に失敗します。

私の単体テストでは、次の結果が得られます。



0 投票する
3 に答える
6845 参照

ruby-on-rails - Factory Girl を使用して複数の関連オブジェクトを定義するにはどうすればよいですか?

Factory Girl のドキュメントでは、(私が推測するに) 親子関係を作成するためのこの構文を提供しています...

投稿はユーザー (「投稿者」) に属します。

User多数の を含む を作成するためのFactory を定義したい場合はどうすればよいでしょうPostか?

または、多対多の状況の場合はどうなるでしょうか (たとえば、以下の更新を参照)。


アップデート

私はそれを理解したと思った。私はこれを試しました...

最初は機能しているように見えましたが、FG が同じユーザー名と電子メールでユーザーを 2 回保存しようとしたため、検証エラーが発生しました。

そこで、元の質問に戻ります。と のような多対多の関係がある場合、関連付けられた を返す Factory をどのように定義できますUsersか? 一意でなければならないことに注意してください.FGを作成するたびにDBに新しい「ADMIN」を作成することはできません.RolesUsersRolesRolesRoleUser

0 投票する
1 に答える
1832 参照

ruby-on-rails - Factory Girl ファクトリーでテストするときに、AASM から :set_initial_state をオーバーライドするにはどうすればよいですか?

アップデート

以下、回答。リンク先のサイトが消えてしまった場合、mochaを使って初期状態をスタブし、上書きを防ぐことができます...

元の質問

私は現在、Acts As State Machine Rails Plugin を実行しており (ちなみに、大幅に時間を節約できました)、Factory Girl でそれを使用する際にいくつかの課題があります (これも素晴らしいことです)。

Factory でオブジェクトを作成するときに、オブジェクトの状態を設定できるようにしたいと考えています。この質問の一般化された言い方は、「ファクトリでオブジェクトを作成するとき、どのようにクラス メソッドを呼び出しますか?」です。

いつでも t.activate! を呼び出すことができます。メソッドをすべてのテスト内で使用しますが、これによりテストが脆弱になります。このメソッドを Factory 作成レベルで実行するか、factory.rb 内で設定する方法を探しています。

ありがとう...

0 投票する
13 に答える
14444 参照

ruby-on-rails - Test::Unit と Shoulda を使用して Factory Girl をセットアップする

Ruby on Rails で Test::Unit と Shoulda を使用して Factory Girl をセットアップしようとしています。gem をインストールし、test/factories ディレクトリに factory ファイルを作成し、test/models ディレクトリに spec ファイルを作成しました。現在発生しているエラーは「ArgumentError: No such factory: test」です。これにより、test_factory.rb ファイルがロードされていないと思いますか? 私が何を変更すべきかについて何か考えはありますか?

これが私のファイルです。

0 投票する
6 に答える
16779 参照

ruby-on-rails - Rails(factory_girl)のユニットテストと機能テストの間のテストデータベースをクリアする

最近、Ruby on Railsアプリケーションをテストするために、フィクスチャからfactory_girlに切り替えました。rake test:unitsを実行して、/ unitsディレクトリでテストを実行すると、すべてが完全に実行されます。rake test:functionalsを使用して(/functionalディレクトリで)機能テストを実行した場合も同じです。

ただし、単にrake testを実行して、ユニットテストと機能テストの両方を一緒に実行すると、2番目のテストグループ(この場合は機能)で検証が失敗し、「検証に失敗しました:名前はすでに取得されています」というメッセージが表示されます。

これは、単体テストで作成されたオブジェクトと同じパラメーターでオブジェクトを作成する機能テストが原因であると思います。単体テストと機能テストの間にテストデータベースがクリアされていないと思います。

私はfactory_girlのシーケンスを使用して、オブジェクトに固有の属性を設定します。つまり、factory_girlはテスト間でリセットされますが、データベースはリセットされません。この問題を解決するにはどうすればよいですか?2つのテストパッケージ間でデータベースをクリアする方法はありますか?

0 投票する
3 に答える
1892 参照

ruby-on-rails - shoulda と factory_girl を使用した REST のテスト - 破棄

shoulda と factory_girl を使用して REST のテストを開発しています。以下のコード

結果として私は見る

教えてください - 何が問題なのか、テストを修正して正しく動作させるにはどうすればよいですか?

UPD:ルートは問題ないようです

0 投票する
2 に答える
2039 参照

ruby-on-rails - factory_girl の関連付けを使用した DRYer テスト

ファクトリがその関連付けに事前構築済みのモデル インスタンスを使用するようにするためのより良い方法を提案できる人はいますか? たとえば、次のように Message ファクトリの子を定義して、 への呼び出し で?Factory(:my_message)を置き換えることができる ようにします。Factory(:message,:sender=>@me)

場合によっては、セットアップ ハッシュがこの不自然な例よりも複雑であるか、非常に多くのテストで繰り返されるため、ファクトリにプッシュした方がよいように思われます。

私が考えることができる 1 つの代替手段は、 などのテスト ヘルパー メソッドを定義するcreate_message_owned_by(@me)ことですが、factory_girl 自体に方法があることを願っています。

factory_girl 工場:

MessagesControllerTest の抜粋 (shoulda を使用):