Ich verwende eine Bibliothek, die Parameter in einer Funktion verwendet, und ich muss meinen Code mit dieser Funktion testen.
Also, ich versuche, über Moq, die ich im Rest des Projekts benutzt habe, hierher zu kommen.
Ich weiß, dass unten eine Textwand ist, also lautet die Frage (im Voraus):
Ich denke, das ist ein Problem auf der spöttischen Seite mit der IXLRow-Oberfläche. Normalerweise erscheint eine XLRow nur aus einer Arbeitsmappe und nie durch new XLRow()
- ist das ein Faktor?
Der folgende Test wird bestanden, wenn (Hinweis: Mocks):
%Vor%Snippet der Methode, die ein gültiges Objekt () simuliert:
%Vor%xUnit-Test, der den glücklichen Pfad testet - Ruft eine falsche Zeile einer gültigen Zeile ab und stellt dann sicher, dass die Validierung bestanden wird. HINWEIS: Dieser Test wird bestanden.
%Vor%ein xUnit-Test (im Grunde "scheitert der Validierer mit einer Zelle, die keine ganze Zahl ist?") HINWEIS: Dieser Test wird bestanden.
%Vor%Der Validator (mit FluentValidation):
%Vor%Als Referenz die Methode aus der Bibliothek:
%Vor%Der erste Test besteht. Aber wenn ich diesen Test ausführe, scheitert es:
%Vor%Aber es schlägt nicht fehl, weil die Validierung nicht implementiert wurde - sie schlägt fehl, weil das andere Element zuerst ungültig ist, obwohl ich es zurückschicke, einen gültigen Schein zu erhalten - derselbe gültige Schein, der Tests besteht sonst.
Die Nachricht ist genau:
Assert.Equal () Fehler
Position: Der erste Unterschied ist auf Position 0
Erwartet: Der Spaltenwert "InvoiceNumber" ist keine Zahl.
Actual: ClaimantID Spaltenwert ist keine Zahl.
Ich würde erwarten:
Aber wenn der glückliche Pfad (zB gültiger Mock) besteht, aber der Test fehlschlägt, weil die Methode ungültig ist (dieselbe, die die gleiche Validierung als Teil des "gültigen" Mocks durchläuft) ... lässt sie mich völlig verwirrt .
Tags und Links c# unit-testing moq mocking fluentvalidation