0

Cucumber を使用して、外部 Web サイトのスナップショットを取得し、変更をログに記録するアプリケーションをテストしたいと考えています。私はすでに RSpec を使用してモデルを個別にテストしており、Cucumber との統合テストを行いたいと考えています。Web サイトのリクエストをモックするために、私は VCR を使用しています。

私のテストは通常​​、同様のパターンに従います:
1. 特定の Web サイト コンテンツがあるとします (これは VCR カセットを使用して行います)
2. Web サイトのスナップショットを撮るとき
3. 次に、1 つの「新しい」スナップショットと 1 つの " new"-ログ メッセージ

Web サイトのコンテンツが変更された場合は、「新しい」スナップショットを作成し、「新しい」ログ メッセージを作成する必要があります。内容が変わらない場合は、「古い」ログ メッセージのみを作成する必要があります。これは、アプリケーションの動作が現在の既存のスナップショットに依存することを意味します。
これが、各行の後に DB をリセットせずにさまざまなシナリオを実行したい理由です。

Scenario Outline: new, new, same, same, new
    Given website with state <website_state_1>
    When I take a snapshot
    Then there should be <1> "new"-snapshot and <1> "old"-log messages and <1> "new"-log messages

Examples:
| state | snapshot_new | logmessages_old | logmessages_new |
| VCR_1 |       1      |         0       |         1       |
| VCR_2 |       2      |         0       |         2       |
| VCR_3 |       2      |         1       |         2       |
| VCR_4 |       2      |         2       |         2       |
| VCR_5 |       3      |         2       |         3       |

ただし、各シナリオの実行後に DB はリセットされます。そして、そのシナリオのアウトラインは、このように使用されることを意図したものではなかったと思います. シナリオは互いに独立しているべきですよね?この方法で問題を解決しようとして何か間違ったことをしていますか? そのためにシナリオの概要を使用できますか/使用する必要がありますか、またはこれを行う別のエレガントな方法はありますか?

J.

4

1 に答える 1