2017-05-22 9 views
0

を認識していない私は、次のWhenSpecflow手順

When Request for servername 'someurl.com/szhm04c4.xml' is processed 

とspecflow機能のファイルを持っている私が押すとF12 Visual Studioは、私は、次のステップ-定義をコピーすることができますことを私に伝えます:

[When(@"Request for servername '(.*)' is processed")] 
public void WhenRequestForServernameIsProcessed(string p0) 
{ 
    ScenarioContext.Current.Pending(); 
} 

Iこれを私のステップファイルに貼り付けてから継承して実装します。

public void WhenRequestForServernameIsProcessed(string servername) 
{ 
    var httpRequest = this.Bootstrapper.GetFake<IHttpRequest>(); 
    A.CallTo(() => httpRequest.Path).Returns(servername); 

    var httpContext = this.Bootstrapper.Get<IHttpContext>(); 

    this.Bootstrapper.Get<IHostRequest>().Process(httpContext); 
} 

Iテストを実行すると、それはfials及びIは、エラーメッセージ、次のGET:

TechTalk.SpecFlow.SpecFlowExceptionテスト保留中:一の以上のステップが見つかりませんマッチングステップ 定義。システムを使用する。 using TechTalk.SpecFlow;

名前空間MYNAMESPACE { [バインディング] パブリッククラスStepDefinitionsは { ます。public void WhenRequestForServernameIsProcessed(文字列P0){ ScenarioContext.Current [(@ "サーバー名依頼 '(。*)' に処理されます")]。保留中(); } }}

なぜですか?私は...このステップを定義するあなたはSpecFlowは、あなたの手順を見つけることができるように、クラスに[バインディング]属性を配置する必要があり、事前

+0

コード内のステップに 'When'属性がありますか? –

+3

バインディングクラスに[Binding]属性がありますか? –

+0

ありがとうございます! [Binding]属性が見つからなかった場合、これを答えとして追加することができます。 – xeraphim

答えて

2

感謝をしました。