Ich verwende NUnit und NSubstitute für Komponententests. Ich habe folgende:NSubstitute kann die zu verwendenden Argumentspezifikationen nicht ermitteln
public interface IDataProvider
{
void Log(int tvmId, DateTime time, int source, int level, int eventCode, string message);
}
...
var fakeDataProvider = Substitute.For<IDataProvider>();
...
fakeDataProvider.Received().Log(
Arg.Any<int>(),
new DateTime(2000, 1, 1),
0,
0,
0,
null);
fakeDataProvider.Received() throws AmbiguousArgumentException mit der Meldung, dass es nicht Argument Spezifikationen bestimmen kann, zu verwenden. Ich habe folgendes auf SO
Cannot determine argument specifications to use
gefunden, die verwandt ist, aber ich kann es nicht oben im Code anzuwenden. Warum ist der obige Code mehrdeutig? Wie sonst könnte ich Received() angeben, dass es irgendein Argument akzeptieren soll?
Danke. Ich dachte, dass Arg.Any <>() der Schuldige war, weil die Ausnahme nur ausgelöst wurde, wenn ich sie benutzte. – Drew
Es ist tatsächlich. Aber das Problem liegt nicht in Arg.Any genau, aber der Typ des Parameters, den Sie Arg.Any verwendet. Da es andere Parameter desselben Typs gibt, weiß NSubstitute nicht, welche Sie Arg_Any angefordert haben. Daher müssen Sie eine Argumentspezifikation für alle Parameter desselben Typs angeben. –