Nunit-Tests mit Mock. Instanz Interface
Habe ich die folgenden (vereinfachten) code.
public class Controller
{
private readonly IService _service;
public Controller(IService service)
{
_service = service;
}
public async Task<IHttpActionResult> Create(MyObject object)
{
var result = _service.method(object);
if (!result.Succeeded)
{
return this.GetErrorResult(object);
}
}
}
und SimpleInjector wird verwendet, um zu injizieren, die Abhängigkeit zwischen _service und deren Umsetzung-Klasse wie folgt:
public static void Register(Container container)
{
container.Register<IService, Service>();
}
Als Hinweis, injection und unit testing sind für mich neu, damit ich nicht ganz verstehen, aber versuche es zu lernen.
Wenn ich die Anwendung ausführen durch Stolzieren, alles ist in Ordnung.
Als Hinweis, die Register
Funktion wird aufgerufen, wenn ich die Anwendung ausführen, durch Angeberei.
Nun, ich bin versucht, setup einige unit-tests mit NUnit, und bin Verspotten die IService-Objekt wie folgt:
var Service = new Mock<IService>();
Controller _controller = new Controller(Service.Object);
_controller.Create(new MyObject object());
die korrekt zu sein scheint mir so weit - ich bin zwar nicht sicher?
Das problem ist, dass für den unit-test, result
immer null ist - ich denke, das ist, weil es ein problem mit meinem Mock von der interface - scheint es nicht zu sein, finden die Methode - es tritt niemals in ihn, und nicht zeigen, bis int er-debugger.
Als Hinweis, für den unit-test, der Register
Methode nicht aufgerufen. Ich habe versucht, nannte es registrieren die Abhängigkeit, aber es hilft nicht.
Wie ich oben sagte, dies ist alles neu für mich und ich bin am Rande meines Verständnisses auf.
Ich bin aus Ideen, und wissen nicht, wohin Sie schauen von hier aus, so dass jede Hilfe wäre sehr geschätzt werden.
EDIT:
Die ursprüngliche Frage war die folgende:
public async Task<IHttpActionResult> Create(string content)
welche ich aktualisiert habe:
public async Task<IHttpActionResult> Create(MyObject object)
Kann mir jemand beraten, wie ich kann in einen generischen Verweis auf MyObject
auf das setup, ohne eine Instanz dieser Klasse.
Also grundsätzlich will ich sagen, dass es eine Instanz dieser Klasse übergeben werden, ohne dass diese Instanz.
Ich habe versucht, die folgenden:
Service.Setup(x => x.method(It.IsAny<MyObject>())
but it says cannot convert MethodGroup to MyObject
und hier ist die definition von IService:
public interface IService
{
IdentityResult method(ApplicationUser user, UserLoginInfo login);
}
Hast du ein Schein-Setup auf dem mock-Objekt?
Möglicherweise müssen Sie Graben das vereinfachte Beispiel und Fragen, was genau Sie brauchen. Denn wir sind nur gehen, um Links zu raten. Sieht aus wie Sie arbeiten Asp.Net Identitäts-Rahmen, der ist breit. also bitte schmalen bis zu Besonderheiten
Sie werden nicht sehen Sie Ihre unit-tests schlagen Ihre
Register
Methode, weil die tests nicht ausführen, die code, die Sie testen Sie Ihre Klasse Unter Test in isolation. Und das ist eine gute Sache: Sie verwenden nicht einen DI-container, während unit-Tests.InformationsquelleAutor Alex | 2017-01-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie den
Mock
Objekt wieder etwas fürIService.method
wie folgt:Mit dem Zusatz von Ihren tatsächlichen
IService
definition, sollten Sie dieSetup
Aufruf:Bitte fügen Sie die definition von
IService
zu Ihrer Frage.Ich habe geschrieben das IService-definition
Aktualisierte Antwort auf "Bearbeiten".
in Zukunft bieten Minimale, Vollständige und Überprüfbare Beispiel Schwerpunkt auf der vollständigen, so dass Sie besser Antworten ohne viel hin und her Fragen, für die Klarstellung.
InformationsquelleAutor Chris Pickford
Die setup-Methode aufgerufen werden, auf dem Mock-Objekt.
InformationsquelleAutor ganeshran
Mit Ihrem Vereinfachtes Beispiel
Vermuten lässt IService ist definiert als
Für die unit Tests, die Sie benötigen, um den setup-mock, fake die Aktionen wollte für den test
Gegeben, dass die zu testende Methode asynchron ist, würden Sie wollen, um den setup-test asynchrone als auch.
InformationsquelleAutor Nkosi