0

私はBDDにまったく慣れていません。ウェブサイトの簡単なサインアップモジュールを開発するために、BDDを使用しようとしています。

私は次のシナリオを持っています:

Scenario: An anonymous visitor successfully signs up with the website  
Given the following email address: john.smith@gmail.com and a chosen member status of childminder and the following password: ------ 
When the anonymous visitor signs up  
Then a confirmation email with activation information is sent to the anonymous visitor

Thenステップを自動化するのにかなり困っています(「その後、アクティベーション情報が記載された確認メールが匿名の訪問者に送信されます」)

これが私が(JBehaveで)行ったことです:

@Given("the following email address: $email and a chosen member status of $status and the following password: $password")
public void anonymousVisitorEntersDetails(String email, String status, String password) {
    pages.home().open();
    pages.home().enterDetails(email, status, password);
}

@When("the anonymous visitor signs up")
public void anonymousVisitorDoesRegister(String login, String password) {
    pages.home().doRegister();
}

@Then("a confirmation email with activation information is sent to the anonymous visitor")
public void activationInformationIsSent() {
    //TODO ??
}

私が抱えている問題は、設計上の問題ほどツールの問題ではありません。経験豊富なBDD実践者がこれを整理するのを手伝ってくれたら、ありがたいです...

4

1 に答える 1

1

あなたのGivenから始めましょう。これにより、コンテキストが設定されます。私があなたのシナリオを理解している場合、興味があるかもしれない関連事項は次のとおりです。-ログインしていない-ホーム(または登録)ページでユーザーの詳細をここに記載しないでください。

次に、Whenステップで、匿名ユーザーが登録するユーザーの詳細を指定します。

最後に、Thenステップでは、確認メールが送信されたことを確認する必要があります。メールを送信して届いたことを確認したくなりますが、これはIMOの間違いです。電子メールの到着は保証されておらず、いずれの場合も低速です。テストスイートを高速かつ堅牢に保ちます。

代わりに、Whenステートメントの文言、またはシナリオのタグを使用して、アプリを模擬メールコンポーネントで構築する必要があることを示します。Thenステップでは、モックに問い合わせて、期待どおりに呼び出されたことを確認できます。

テストのどこかで、「実際の」電子メールコンポーネントが正しく展開されていることを検証するための統合テストや受け入れテストが必要になります。これは手動テストの場合もあれば、メールクライアントにログインして、期待される内容の電子メールが到着するまでポーリングする、低速で気まぐれな自動テストの場合もあります。

于 2013-02-11T15:36:15.320 に答える