2016-11-16 4 views
0

Ich bin neu in der Unit-Tests und es klingt für mich wie es sollte einfach sein, NSubstitute in der Lage sein, Null für eine Methode zurückgeben, aber ich kann es nicht zum Laufen bringen.NSubstitute, um eine Null für ein Objekt zurückzugeben

Ich habe schon versucht, diese für eine Get-Methode, die eine Kampagne Methode

_campaigns = Substitute.For<IOptions<Campaigns>>(); 
_campaigns.Get(Arg.Any<string>()).Returns(null); 

In der Produktion zurückkehren sollte ich eine FirstOrDefault() Methode verwenden, um die Kampagne Objekt zurückzukehren und es gibt null zurück, wenn es nicht existiert. Also in meinem Gerät zu testen möchte ich diesen Fall testen, aber ich kann es mit NSubstitute nicht vortäuschen, wie ich die folgende Fehlermeldung beim Kompilieren:

error CS0121: The call is ambiguous between the following methods or properties: 'SubstituteExtensions.Returns(T, T, params T[])' and 'SubstituteExtensions.Returns(T, Func, params Func[])'

ich dies den Fehler zu vermeiden:

_campaigns.Get(Arg.Any<string>()).Returns((Campaign)null); 

aber dann bekomme ich einen Fehler bei der Ausführung auf dieser Linie:

System.NullReferenceException : Object reference not set to an instance of an object.

+1

Zweites Beispiel muss funktionieren, denke ich. Können Sie eine vollständige Zeile anzeigen, in der Sie 'NullReferenceException' erhalten - Sie verwenden den Rückgabewert irgendwie – Fabio

Antwort

0

ich das Problem, fand ich eine tatsächliche Klasse bin mit „Kampagnen“ und nicht um eine Schnittstelle, so NSubstitute die tatsächliche Klasse wurde unter Verwendung :(

NSsubstitute ist Design mit Schnittstellen zu arbeiten.

Also anstelle von NSubstitute in diesem Fall habe ich gerade ein falsches Objekt für meine Klasse erstellt.

Verwandte Themen