3

MSpec を使用して次のシナリオを表現するにはどうすればよいですか?:

Scenario: Navigation to homepage
   When I navigate to /Guestbook
   Then I should be on the guestbook page

SpecFlow は、仕様にパラメーターを渡すことができるため、この種のことをより簡単にします。

[When(@"I navigate to (.*)")]
public void WhenINavigateTo(string relativeUrl)
{
}

MSpec では、コンテキスト/仕様はクラスの名前から取得されるため、特殊文字 (URL で使用される文字など) は使用できません。

私が達成したいのは、次のような出力です。

Browsing the site, When I navigate to /guestbook
¯ should go to the guestbook page
Browsing the site, When I navigate to /news/article-slug
¯ should go to the news article with matching slug
4

2 に答える 2

2

コンテキストまたは MSpec の仕様で特殊文字を使用する方法は実際にはありません。以前は必要ありませんでした。私が見た中で、仕様に実際の URL パスを含める説得力のある理由があるのはあなただけだと思います。一般的にはそれを避けるでしょうが、SEO スペシャリストがあなたの仕様レポートを読んでいるのであれば、それはわかります。別のツールを試すか、コンテキストまたは仕様の文字列名をオーバーライドできる属性のサポートを追加するパッチを MSpec に送信することをお勧めします。

于 2012-08-16T15:26:23.767 に答える
2

SpecFlow は主にシステム レベルの例に使用されますが、MSpec は通常、クラス レベルの例に使用されます。

URL の動作とより技術的な詳細については、クラス レベルの例である AKA 単体テストを使用する傾向があります。MSpec はこれに最適です。たとえば、これは URL を提供する Navigator クラスを記述します。

私の Navigator クラスは、読みやすく覚えやすい URL を提供する必要があります

slug cat-in-a-tree を含む記事が与えられた
場合、ナビゲーターに URL を尋ねると、
それは読めるはずです。

次に、その例の中で実際の URL をチェックできます。

より高いレベルでは、システムがユーザーに提供する機能の観点からシナリオを考えてみてください。私がユーザーである場合、その特定の URL をゲストブックに使用できることを気にするのはなぜですか? そもそもなぜゲストブックに行くのですか? このレベルでは SpecFlow の方が適しています。

ゲストブックにサインインしたユーザーが表示されるはずです

Keyboard Cat が最近私のゲストブック
に署名したとすると、ゲストブックに移動すると
、リストに Keyboard Cat の名前が表示されます。

これで、シナリオをゲストブックに移動させることができますが、ユーザーがゲストブックに移動する方法の詳細はシナリオのステップ内に保持してください。また、このシナリオでは、使用しているのが Web ページ、Windows アプリケーション、携帯電話、物理的な書籍のいずれであるかについては何も述べていないことがわかります。それは、提供する機能についてだけです。通常、このような高レベルのシナリオは保守が容易であり、チーム全体がユーザーに提供する価値に集中するのに役立ちます。

于 2012-04-09T09:28:07.440 に答える