Highline gemに基づくインタラクティブな CLI アプリがあります。Arubaを使用して、Cucumber テスト用にインタラクティブに実行できます。しかし、Aruba はアプリを子プロセスとして開始するため、スタブとモックを使用することはできません。Aruba::InProcess機能を使用しようとすると、対話性が失われます。
もうわかりません。そのようなアプリをどのようにテストできますか?
わかりました、私はそれを理解します: Cucumber はスタブやモックに関するものではありません。インタラクティブな CLI アプリは、おそらくその最良の例です。そのため、インタラクティブ性が必要な間、Aruba を介した Cucumber は子プロセスでアプリを開始します。そして、それに影響を与える唯一の方法は、環境変数の使用です。たとえば、値 'production'/'development'/'test' で変数を設定することにより、アプリの構成を変更して、本番環境ではなくテスト DB を使用することができます。
正確に何をスタブしてモックしたいのですか?
Cucumber は主に統合テスト、つまりエンドユーザーの観点からのテストに使用されます。エンドユーザーはそのインターフェースを介してアプリを使用します。そのため、キュウリはアプリの内部をスタブ化およびモックする簡単な方法を提供していません。少なくともキュウリではそうすべきではありません。
rspec を使用したキュウリまたは単体テスト用のフィクスチャの使用を検討してください。
サードパーティからの応答をスタブ化したい場合は、webmock gem を使用して要求をインターセプトし、フィクスチャを応答として返すか、fakefs を使用してファイルシステムに対して同じことを行うことができます。