Normalerweise schreibe ich meine Komponententests in F # als
%Vor%Wenn ich mich von xunit an der Konsole anmelden will (laut Ссылка ), muss man schreiben ein Konstruktor, der ein ITestOutputHelper verwendet und dann dieses anstelle von Console.WriteLine und family verwendet.
%Vor%aber fsharp Module sind statische Klassen und die Tests sind statische Methoden. Es gibt keinen Konstruktor, der den Ausgabe-Helper injiziert.
Gibt es eine Möglichkeit, Zugriff auf den aktuellen Ausgabe-Helper für den aktuellen Test zu erhalten. Ich weiß, dass ich meine fsharp Tests schreiben könnte, um nicht statische Klassen zu sein, aber das ist unerwünscht.
Nach dem Betrachten der XUnit-Quelle.
Ich bin mir ziemlich sicher, dass dies ein übersehener Fall ist. Es gibt keine Injektion des Helfers in statische Klassen.
Wenn xUnit keinen alternativen Mechanismus für die Injektion der Parameter hat, dann denke ich, dass die einzige Option darin besteht, die Tests als Methoden in einem F # -Objekttyp zu definieren. Ich bevorzuge es auch, Tests als Funktionen mit let
zu schreiben, aber der folgende einfache Objekttyp sieht nicht schlecht aus:
Es wäre nett, wenn xUnit eine andere Option dafür unterstützt - ich vermute, dass sie für Vorschläge offen sein könnten, wenn es etwas ist, das nicht zu peinlich wäre (vielleicht mit einem Methodenparameter?)
Aber es sei denn, dass xUnit Unterstützung für eine andere Methode hinzufügt, denke ich, dass Sie F # -Objekt mit Methoden verwenden müssen.