私は主にSeleniumでUIオートメーションを書いています。本当に独立した並列実行可能なテストを書くためには、必要なテストデータ(ユーザーアカウントなど)を動的に作成して破壊するテストが必要です実行時にFactory Girlは、他のテストで使用する永続的なテストデータ/成果物を効率的に作成するために使用できますか?
これらのテストデータを作成するためのUIオートメーションテストケースのセットアップ手順を活用することができますが、今後のプロジェクトにはAPIがないことやそのようなことを行うことができる公的にアクセス可能なサービス。
開発者は、このようなことを作成するためにRailsテストでFactory Girlを使用していると言われています。同様のデータを作成するためにすでに行った作業を利用できることを期待しています。独自のデータベースインジェクションスクリプトを作成して管理したり、UIオートメーションが実際にUIなどでこのテストデータを作成しようとするのを避けたいと考えています。
だから!実際にテストデータを作成するためのユーティリティであり、テスト中のシステムの外部からリモートでオンデマンドでトリガできるカスタムrspecテストを書いたと仮定すると、Factory Girlはワイプしないように呼び出すことができますそれが実行される前にデータベースを削除し、作成したデータも破棄しないでください。開発者は既にFactory Girlがテスト用の適切なデータを作成していることを確認しているので、それをピギーバックして永続的なテストアカウントを作成するために使用することは可能です。ありがとう!
感謝を!トランザクションのフィクスチャ設定でFactory Girlで作成したものが多くのテストで永続化できるようになるのは聞こえますが、Factory Girlはまだ最後に行ったすべてを取り消しますか?私はそれをしないようにする必要があります - それは永久に作成したすべてのものを残し、rspecテストが終了した後に誰かがシステムとやりとりできるようにする必要があります。それはDatabase Cleanerの機能です。#cleanを持っていないのであれば、DBにすべてのものを永久に残しますか? –
FactoryGirlは何も削除しません。文字通り、オブジェクトを生成する「ファクトリ」であると考えてください。単体テストを行っておらず、オブジェクトをデータベースに残しておくという唯一のユースケースがある場合、 'transactional_fixtures'をオフにすると正常に動作します。データベースクリーナーを使用する必要はありません。 – binarymason
クール。単体テストが行われていますが、問題はないと思います。開発者は、必要なデータを生成し、db内の他のデータについて特定の前提を設定しない、Factory Girlを使用してユニットやその他のテストを作成します。これらのテストは、独自の小さなバブルで独自のデータを作成/破壊する必要があります。私のテストの意図は、その機能をハイジャックし、実際にテストデータを作成するためのユーティリティである特別な "テスト"を呼び出すことです。これらのテストは終了し、作成したデータを使用してUIテストを実行します。 –