2016-03-24 2 views
0

Ich muss die Werte in der Tabelle auf der Webseite überprüfen. In den meisten Fällen sind dies vorbekannte Werte. Aber manchmal ist der Wert zum Beispiel das aktuelle Datum. Ist es möglich, im Schritt "Dann" etwas wie "= heute()" zu schreiben und nur für diesen Fall keinen neuen Schritt zu erstellen? So kann ich so etwas wie dies mittels SpecFlow: Then I verify values in MyTable | ColumnA | ColumnB |ColumnC | | Electricity | 100 | =today() | | Electricity | 200 | =today() | Wie schreibe ich einen SpecFlow-Schritt, um den Wert zu prüfen, der nur zur Testausführungszeit bekannt ist?

Antwort

0

Wenn der Wert aus einer Tabelle kommen hat, dann können Sie nur für Ihre bekannten Werte überprüfen und die Termine von ihnen erstellen. Etwas in dieser ungetesteten Linien:

[Then("I verify values in MyTable")] 
public void ThenIVerifyValuesInMyTable(Table table) 
{ 
    foreach(var row in table.Rows) 
    { 
     DateTime comparisonDate; 
     if (row[2].Value =='Today') 
     { 
      comparisonDate=DateTime.Today; 
     } 
     else 
     { 
      comparisonDate = DateTime.Parse(row[2]); 
     } 
     comparisonDate.Should().Be(myTable.ExpectedDate); 
    } 
} 
0

Hoffnung hier ist eine Antwort Default Values Specflow Step Definitions SpecFlow „Schritt Argument Transformationen“ unterstützt das Erstellen. Mit ihnen können Sie Methoden erstellen, die Datetime aus verschiedenen Mustern analysieren kann:

[StepArgumentTransformation("todays date")] 
    public DateTime TransformToday() 
    { 
    return DateTime.Today; 
    } 

Danach müssen Sie nur ein Datetime-param in Ihre Schritte verwenden, und der Rest wird durch SpecFlow getan ...

[Given(@"myfield equals (.*)")`enter code here`] 
    public void MyfieldEqualsTodaysDate(DateTime date) 
    { 
     //do stuff 
    } 
+0

Ich glaube nicht, dass dies mit einem Tabellenargument funktioniert, Sie müssten den Wert in eine Schrittdefinition setzen oder Beispiele verwenden –

+0

Nun, ich konnte nicht mit Tabellenargumenten überprüfen. Aber ich überprüfte folgendes schnelles Beispiel [Dann (@ "Ich überprüfe Werte in Tabelle mit Datum"]] public void ThenIVerifyValuesInTableWithDate (Tabellentabelle) { var rr = table.CreateInstance (); Debug.Print (rr.ColumnC.ToString()); } } public class MyTable { public string ColumnnA {get; einstellen; } öffentliche Zeichenkette ColumnB {erhalten; einstellen; } public DateTime SpalteC { get {return DateTime.UtcNow; } set {}; } } – Vitalii

+0

Dies geht davon aus, dass Ihre Spalte immer die gleichen Daten enthält, in diesem Fall gibt es keinen Sinn in der Tabelle –

Verwandte Themen