Wie funktioniert MoFindFluent, damit dieser Aufruf von ToListAsync funktioniert?

8

Ich teste Unit einen Wrapper für den MongoDB C # -Treiber. Ich habe diese Codezeile:

%Vor%

Wobei Collection vom Typ IMongoCollection<T> ist und Find(predicate) gibt eine Instanz zurück, die IFindFluent<T, T> implementiert. ToListAsync() ist eine Erweiterung, um die Ergebnisse in eine Liste umzuwandeln, nehme ich an.

Ich versuche Komponententests zu schreiben, und ich bin ratlos darauf. Ich kann keine Wrapper-Klasse erstellen, weil ich gerade daran arbeite. Ich würde es vorziehen, es entweder so zu machen, dass ToListAsync() eine erstellte Liste zurückgibt ODER um Find() zu verspotten, um etwas zurückzugeben, das zu einer Liste gemacht werden kann.

    
Codeacula 28.07.2015, 01:30
quelle

1 Antwort

2

Ich habe eine kleine Abstraktionsschicht dafür gemacht, da ich nichts passendes finden konnte und um Hilfe bat keine Antworten ergab.

Ich habe speziell für die MongoDB-Schnittstelle ein Interface / Implementierungspaar namens AppCollection erstellt. IAppCollection würde eine Methode für IAppCollection.ToList(predicate) haben und die AppCollection würde den Aufruf Collection.Find(predicate).ToListAsync(); ausführen und die Liste zurückgeben. Später war es eine Kleinigkeit, die IAppCollection zu verspotten, um sicherzustellen, dass die richtigen Anrufe getätigt wurden. Während ich die Prädikate im nativen LINQ nicht testen konnte, konnte ich die Prädikate zumindest kompilieren und mit passierenden / fehlerhaften Objekten vergleichen.

    
Codeacula 08.02.2017, 04:25
quelle