У меня есть сервисный метод, который вызывает метод репозитория;например:
public async Task<bool> MyMethod(string param1, string param2)
{
var result = myRepository.Where(x => x.param1 == param1).ToList();
await myRepository.doStuff(result);
Я пытаюсь написать тест, который в настоящее время выглядит следующим образом:
var data = new List<MyData>() {new MyData {param1 = "1", param2 = "test"}};
var myRepository = Substitute.For<IMyRepository>();
myRepository.Where(x => x.param1 == "1").ReturnsForAnyArgs(data);
var myService = new MyService(myRepository);
bool w = myService.MyMethod("1", "2");
await myRepository.Received().doStuff(data);
Однако я получаю сообщение об ошибке:
Сообщение: NSubstitute.Exceptions.ReceivedCallsException: Ожидается, что будет получен соответствующий вызов: doStuff (List ) Фактически не получено ни одного соответствующего вызова.Получен 1 несовпадающий вызов (несоответствующие аргументы, обозначенные символами '*'): doStuff (* List *)
Я также пробовал синтаксис утверждения, такой как:
await myRepository.Received().doStuff(Arg.Is<List<MyData>>(data));
Но это не имеет значения.Я что-то здесь упустил или что-то не так с тем, как я проверяю список.Я предполагаю, что это связано с тем, как сравниваются два списка, и поэтому они не выглядят одинаково, но если я не ошибаюсь, они абсолютно одинаковы.