2

2 つのシナリオが同時に発生する可能性がある場合、それは (常に/常に) 第 3 のシナリオを構成しますか?

私の現在の考えでは、それらは必ずしも排他的ではありません (シナリオによって異なります)。同時に発生する可能性のある 2 つのシナリオがある場合、Given/When/Then のステップが暗黙的にマージされない場合、または 1 つのシナリオが他のシナリオよりも優先される場合、3 番目のシナリオのみが必要になります。

この質問は、本質的にオブジェクトのコレクションが別のオブジェクトに注入される形式の注入のシナリオについて考えているときに生じました ( https://github.com/jameskennard/mockito-collections )。したがって、「テスト対象のオブジェクトのクラスには共同作業者のリストがある」と「テスト対象のオブジェクトのクラスには共同作業者のセットがある」という 2 つのシナリオが考えられます。両方が同時に発生する可能性があるため、3 番目のシナリオは「テスト対象のオブジェクトのクラスに、リストと共同作業者のセットがある」というものです。しかし、それは適切ではありません。あまりにも冗長です。Given/When/Then のステップが暗黙的にマージされているように見えると思います。(自分の質問に答えたばかりかもしれませんが、気分が悪いです)

違う考えの人はいますか?

4

2 に答える 2

1

ここで重要なのは振る舞いだと思います。あなたが尋ねている潜在的な3番目のシナリオ(「テスト対象のオブジェクトのクラスにはリストと共同作業者のセットがあります」 )はもちろん現実ですが、動作は他の2つのシナリオですでにカバーされているので、別のシナリオを書く必要があります。

与えられたものの組み合わせが異なる動作をもたらす場合、確かに 3 番目のシナリオがありますが、定義しようとしている動作は 2 つのシナリオでカバーされていると思います。

于 2012-10-08T16:07:11.800 に答える
1

現時点では、上記の文は動作ではなく状態を説明しています。

異なるコンテキストのそれぞれで得られる異なる結果は何ですか? 私は次のようなものを期待します:

Given my CUT has five collaborators
When I do my thing with the class
Then it should use each collaborator in turn.

Given my CUT has five collaborators
And the fourth and fifth collaborators are identical
When I do my thing with the class
Then it should only use the fourth collaborator once.

これは、リスト (順序付き) とセット (重複なし)の異なる動作を示しています。

これら 2 つの要素が独立して本当に有益である場合、はい、それらは 2 つの別個のシナリオです。クラスが値を持つために両方が存在する必要がある場合は、それらを1つにマージします。

Given my CUT has five collaborators
And the fourth and fifth collaborators are identical
When I do my thing with the class
Then it should use each collaborator in turn
And it should only use the fourth collaborator once.

2 つの同時利益の例としては、ATM から現金を引き出す場合があります。この場合、現金が引き渡され、口座からも引き落とされます。どちらも独立して行うことはできませんでした。トランザクションの領収書を提供することは、ATM が価値があるために発生する必要がないため、別の利点になります。これが区別をするのに役立つことを願っています。

于 2012-10-08T09:39:15.057 に答える