2016-08-02 3 views
0

So habe ich ein paar Tests, wo ich Schritte aus Schritten wieder verwendet habe.Navigieren von Schrittdefinitionen zu Specflow Schritt

Aber ich habe jetzt einen Albtraum auf der Wartungsfront, in der ich nicht leicht zwischen den Schritten navigieren kann.

Hier ist ein Beispiel:

[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"); 
    } 

Wie kann ich zu einem dieser internen Schritte navigieren?

Wenn ich zum "Wann (" ich suche nach einer Komponente ") navigieren wollte;" Schritt ich kann nicht.

Wenn ich auf der Feature-Datei wäre, könnte ich einfach mit der rechten Maustaste auf den Schritt und "gehe zur Definition", aber ich kann das hier nicht tun. Hat jemand eine Lösung?

+0

die einzige Lösung, die ich gefunden habe, ist die Suche nach dem Schritt Text mit dem visuellen Studio finden. –

Antwort

1

Ich nehme an, dass Sie die Schritte mit den Given/When- Funktionen aufrufen, da sie sich in einer anderen Bindungsklasse befinden. Habe ich recht?

Es gibt einen besseren Weg, als diese Funktionen zu verwenden.

Haben Sie sich das Treiberkonzept und die Kontext-Injektion angeschaut? Werfen Sie einen Blick hier: http://www.specflow.org/documentation/Context-Injection/

einfach Ihre Logik Ihrer Schritte zu einer Treiberklasse extrahieren und eine Instanz von ihm in den verschiedenen Schritt Klassen erhalten:

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(); 
    } 
} 

Wenn Sie Ihren Schritt Implementierungen wie das arrangieren, Die Wiederverwendung anderer Schritte ist viel einfacher.

+0

Ich stimme völlig zu, ich bin dabei, die Tests neu zu schreiben, ich hoffte, ich könnte eine Abkürzung haben, um zu dem Schritt zu navigieren, aber es scheint jetzt nicht so. – Festivejelly

Verwandte Themen