2017-03-16 4 views
1

私はSpecFlowでテストを実装しています。システム名はSystem33です。システム名を参照するたびにSpecFlowは "33"をパラメータとしてバインドしようとします。たとえば:SpecFlowが間違って番号を持つ識別子を割り当てます

Given I am a valid System33 user logged in the system 

は、このステップにバインドされます。

[Given(@"I am a valid System(.*) user logged in the system")] 
public void GivenIAmAValidSystemUserLoggedInTheSystem(int p0) 

私は別の部署からスペックを受け、彼らは常に「System33」に言及ので、これは非常にanoyingです。

私はこの標準的な動作を無効にする方法を見つけようとしましたが、ドキュメントは率直に悪いです。

http://specflow.org/documentation/Using-Gherkin-Language-in-SpecFlow/

誰もが単語の末尾の数字がパラメータ値ではないことをSpecFlowを伝える方法を知っていますか?

答えて

0

コードは、Specflow VS Integrationの一部であるスケルトンコードジェネレータによって生成されます。それはステップで何がパラメータであるかを推測しようとします。また、ほとんどの時間数値がステップでパラメータであるため、数値は常にパラメータとして扱われます。

ジェネレータの動作を設定することはできませんが、単に文字列を変更することはできません。これは正規表現であり、あなたが望むものに変更することができます。ジェネレータはあなたのための提案と出発点のみを生成します。

1

それは説明するのはかなり簡単です、あなたのステップ

[Given(@"I am a valid System(.*) user logged in the system")] 

()でマークされたグループを返す正規表現になります。このグループは、ステップバインディングの引数に渡されるものです。

しかし

"I am a valid (System.*) user logged in the system" 

の正規表現ではなくSystem33でグループを返します。 Given I am a valid System33 user logged in the systemのソースとパターンI am a valid (System.*) user logged in the system

結果の結果を与えるあなたはどこhttp://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx

のように、正規表現チェッカーを使用してこれを見ることができます

が見つかりました1試合:

  1. I am a valid System33 user logged in the systemには、1グループがあります。 プログラムで使用するための
    1. System33

文字列リテラル:

C#

@"I am a valid (System.*) user logged in the system" 
関連する問題