2016-08-02 13 views
0

そこで、ステップ内でステップを再利用したテストがいくつかあります。ステップ定義内からSpecflowステップに移動

しかし、私は今メンテナンスの面で悪夢を抱いています。ステップの間を簡単にナビゲートできません。

はここに例を示します

[Given(@"I have an order")] 
    public void GivenIHaveAnOrder() 
    { 
     Given("an open store"); 
     Given("I am an existing customer"); 
     Given("I am on homepage"); 
     When("I search for a component"); 
     When("I add the component to my basket"); 
    } 

は、どのように私はそれらの内部のいずれかの手順に移動しますか?

「いつ(「私がコンポーネントを検索する」); "ステップ私は傾ける。

私がフィーチャファイル上にあった場合は、単にステップを右クリックして「定義に移動」することができましたが、ここでそれを行うことはできません。誰にも解決策がありますか?

+0

私が見つけた唯一の解決策は、ビジュアルスタジオ検索を使用してステップテキストを検索することです。 –

答えて

1

Given/When-関数が異なるバインディングクラスにあるため、これらのステップを呼び出すと仮定します。私は正しい?

この機能を使用するよりも、この機能を使用するよりも優れた方法があります。

ドライバーの概念とコンテキストインジェクションを見ましたか? はこちらをご覧:http://www.specflow.org/documentation/Context-Injection/

は、単にドライバクラスにあなたのステップのあなたのロジックを抽出し、異なるステップのクラスで、そこからインスタンスを取得:

class Driver 
{ 
    public void AnOpenStore() 
    { 
     ... 
    } 
} 

[Binding] 
public class StepClass1 
{ 
    private Driver _driver; 

    public StepClass1(Driver driver) 
    { 
      _driver = driver; 
    } 

    [Given(@"I have an order")] 
    public void IHaveAnOrder() 
    { 
      _driver.AnOpenStore(); 
    } 
} 

[Binding] 
public class StepClass2 
{ 
    private Driver _driver; 

    public StepClass2(Driver driver) 
    { 
      _driver = driver; 
    } 

    [Given(@"an open store")] 
    public void AnOpenStore() 
    { 
      _driver.AnOpenStore(); 
    } 
} 

あなたがそのようなあなたのステップの実装を整理すると、他のステップの再利用はずっと簡単です。

+0

私はまったく同意します、私はステップにナビゲートするためのショートカットを持つことができたが期待していたテストを書き直す過程ですが、今はそうではありません。 – Festivejelly

関連する問題