2017-11-27 5 views
0

Ich habe eine Klasse erstellt konvertiert specflow Parameter benutzerdefinierte KlasseImplizite Operator String Eingabeparameter für benutzerdefinierte Klasse mit specflow

public class KeyphraseState 
{ 
    private Dictionary<string, bool> Keyphrase = new Dictionary<string, bool>() 
    { 
     { "displayed", true }, 
     { "not displayed", false } 
    }; 

    private string Phrase; 
    private bool State; 

    public KeyphraseState(string text) 
    { 
     this.Phrase = text; 
     this.State = GetState(this.Phrase); 
    } 

    private bool GetState(string phrase) 
    { 
     return Keyphrase[phrase]; 
    } 

    public static implicit operator KeyphraseState(string text) 
    {    
     return new KeyphraseState(text); 
    } 
} 

Dann versuche ich, es zu benutzen in Schritt Definitionen wie

zu konvertieren
[When(@"link is (.*) on the page")] 
    public void WhenLinkIs(string status) 
    { 
     KeyphraseState st = status; 
     // ... 
    } 

und es funktioniert super. Aber wenn ich versuche, es zu benutzen in Schritt Bauer

[When(@"link is (.*) on the page")] 
    public void WhenLinkIs(KeyphraseState status) 
    { 
     // ... 
    } 

dann habe ich eine Fehlermeldung Ungültige Umwandlung von ‚System.String‘ auf ‚KeyphraseState‘

Kann jemand erklären, wenn es möglich ist, zu verwenden impliziter Operator in diesem Fall oder andere Möglichkeiten, eine solche Konvertierung zu implementieren?

Antwort

1

In SpecFlow gibt es eine Funktion namens "Step Argument Transformation". Transformiert den Wert von Ihrem Schritt im Szenario in den Typ Ihres Parameters in Ihrer Schrittbindungsmethode.

Dokumentation und Beispiele sind hier: http://specflow.org/documentation/Step-Argument-Conversions/

+0

Andreas, vielen Dank für Ihre Antwort. Ich werde Transformationen versuchen und hier einen Kommentar hinzufügen, wenn es mir gelingt. – Egor

+0

Ich sehe, dies wurde abgelehnt, aber ohne Grund, warum ... – Danny

+0

Yep. Ich weiß nicht warum und wer hat es getan – Egor

Verwandte Themen