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.
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.
Tags und Links c# unit-testing moq mongodb-.net-driver