Moq ReturnsAsync() mit Parametern
Ich versuche, mich zu verspotten, ein repository Methode, wie
public async Task<WhitelistItem> GetByTypeValue(WhitelistType type, string value)
Verwendung Moq ReturnsAsync, wie diese:
static List<WhitelistItem> whitelist = new List<WhitelistItem>();
var whitelistRepositoryMock = new Mock<IWhitelistRepository>();
whitelistRepositoryMock.Setup(w => w.GetByTypeValue(It.IsAny<WhitelistType>(), It.IsAny<string>()))
.ReturnsAsync((WhitelistType type, string value) =>
{
return (from item in whitelist
where item.Type == type && item.Value == value
select item).FirstOrDefault();
});
aber ich bin mir immer diese Fehlermeldung in der Zeile "... ReturnsAsync((WhitelistType Typ...):
Nicht in der lambda-Ausdruck zum Typ " - Modell.WhitelistItem' da
es ist nicht ein delegattyp
WhitelistType ist eine Enum-so:
public enum WhitelistType
{
UserName,
PostalCode
}
Suchte ich nach Stunden und nicht gefunden keine Antwort auf mein problem.
Irgendwelche Hinweise?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Von Moq v4.5.28 ab
Können Sie
ReturnsAsync
mit lambdas, genau so, wie im code-Beispiel für die Frage. Keine Notwendigkeit zu verwendenTask.FromResult()
mehr. Sie nur müssen der Typisierung des lambda-delegieren Argumente. Sonst erhalten Sie die Fehlermeldung:Um ein Beispiel zu geben, die folgenden arbeiten mit der neuesten version von Moq:
Bevor Moq v4.5.28 (Antwort Alexei Levenkov)
Verwenden Sie
Returns
mitTask.FromResult
: