Ich benutze asp netcore 1.0 und xunit.Mock IMemoryCache im Komponententest
Ich versuche, einen Komponententest für Code zu schreiben, der IMemoryCache
verwendet. Wenn ich jedoch versuche, einen Wert in IMemoryCache
zu setzen, bekomme ich einen Null-Referenzfehler.
Der Testcode meines Geräts lautet wie folgt:
Der IMemoryCache
wird in die Klasse eingefügt, die ich testen möchte. Wenn ich jedoch versuche, im Test einen Wert im Cache zu setzen, bekomme ich eine Nullreferenz.
public Test GetSystemUnderTest()
{
var mockCache = new Mock<IMemoryCache>();
return new Test(mockCache.Object);
}
[Fact]
public void TestCache()
{
var sut = GetSystemUnderTest();
sut.SetCache("key", "value"); //NULL Reference thrown here
}
Und das ist die Klasse-Test ...
public class Test
{
private readonly IMemoryCache _memoryCache;
public Test(IMemoryCache memoryCache)
{
_memoryCache = memoryCache;
}
public void SetCache(string key, string value)
{
_memoryCache.Set(key, value, new MemoryCacheEntryOptions {SlidingExpiration = TimeSpan.FromHours(1)});
}
}
Meine Frage ist ... Muss ich Setup müssen die IMemoryCache
irgendwie? Setzen Sie einen Wert für den DefaultValue? Wenn IMemoryCache
Mocked ist, was ist der Standardwert?
Danke.
können Sie zeigen, ein [MCVE], wie Sie die Abhängigkeit in Ihrer Klasse verwenden. Dies wird bestimmen, wie Sie den Mock einrichten müssen. – Nkosi
Ich habe aktualisiert, um den Rest des Codes anzuzeigen. –
Wird die Ausnahme ausgelöst, weil sut null ist oder bei der Ausführung des _memoryCache.Set-Aufrufs in der setcache-Methode ausgelöst wird? – Macilquham