ich so etwas wie dieses:MSTest - Moq Setup mit einer Liste Parameter gibt leere Liste
WebRequestManagerMock
.Setup(x => x.GetItemsAsync(It.IsAny<IEnumerable<Order>>()))
.Returns<IEnumerable<Order>>(orders => Task.FromResult<IEnumerabe<Item>>(m_Items.Take(orders.Count())));
m_Items
ist eine statische Liste, die ich in der Klasse initialisieren gefüllt und ist nicht leer.
Orders
ist auch nicht leer, wenn ich den Test debuggen.
Wenn ich anrufe GetItemsAsync
bekomme ich 0 Artikel egal wie viele Bestellungen es gibt.
Der Schein ist auch statisch.
Mache ich etwas falsch?
Danke für die Hilfe. Aus irgendeinem Grund erkennt Visual Studio keine asynchronen Tests, und ich kann sie nicht ausführen. Ansonsten habe ich meinen Mock zum Test gebracht, und es funktioniert irgendwie, nur jetzt habe ich ein Problem mit dem Returns-Ausdruck - ohne die Liste der Order-Parameter funktioniert es, aber nicht mit ihm (der Lambda-Ausdruck) – user6251216
@ user6251216, bearbeiteter Test, so dass er nicht mehr asynchron ist und immer noch funktioniert. Notieren Sie sich die Änderungen und sehen Sie, dass der Test jetzt erkannt wird. Welche Version von VS verwenden Sie und welche Version von .Net ist Ihr Targeting? – Nkosi
Ursprünglich war es Visual Studio 2013 mit .NET 4, aber ich habe es kürzlich auf 2015 mit .NET 4.5 aktualisiert. Ich habe gerade ein Problem mit den 'Returns> (...)' - es wirft eine Reflektion Ausnahme in Bezug auf die Anzahl der Parameter, obwohl es nicht scheint, habe ich ein Problem mit der Klammer oder so etwas. Die normalen 'Returns' funktionieren jedoch. –
user6251216