Я использую NUnit и NSubstitute для модульного тестирования. У меня есть следующие:NSubstitute не может определить параметры аргументации для использования
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() кидает AmbiguousArgumentException с сообщением, что он не может определить характеристики аргументов использовать. Я нашел следующее на SO
Cannot determine argument specifications to use
, который связан, но я не могу применить его в коде выше. Почему приведенный выше код неоднозначен? Как еще я могу указать в Received(), что он должен принимать какие-либо аргументы?
Спасибо. Я думал, что Arg.Any <>() был виновником, потому что исключение было только брошено, когда я его использовал. – Drew
Это на самом деле. Но проблема не в том, что Arg.Any точно, но тип параметра вы использовали Arg.Any. Так как существуют другие параметры с одним и тем же типом, NSubstitute не знает, какой из них вы запросили как Arg.Any, поэтому вам нужно указать спецификацию аргумента для всех параметров одного типа. –