Почему не получается сделать мок FindAsync с помощью NSubstitute?

Рейтинг: 0Ответов: 0Опубликовано: 03.06.2023

Сделал Setup метод для тестов, но почему-то, когда в тесте вызывается метод репозитория с FindAsync вылетает ошибка Can not find an argument of type System.Guid to this call.

public void Setup()
{
    data = new List<ModelEntity> { new() { Id = Guid.NewGuid(), FieldOne = "A" };
    var mockSet = data.AsQueryable().BuildMockDbSet();
    var mockContext = Substitute.For<IApplicationContext>();

    mockContext.ModelsTable.Returns(mockSet);
    mockContext.ModelsTable.FindAsync(Arg.Any<Guid>()).Returns(callInfo => data.FirstOrDefault(x => x.Id == callInfo.Arg<Guid>()));

    var config = new MapperConfiguration(cfg => cfg.CreateMap<ModelEntity, Model>());
    var mapper = new Mapper(config);

    repository = new StudentsRepository(mockContext, mapper);
}

В чем может быть проблема? Пробовал еще заменить строку в Setup на:

mockContext.ModelsTable.FindAsync(Arg.Any<Guid>()).Returns(callInfo => data.FirstOrDefault(x => x.Id == (Guid)callInfo[0]));

Но тоже вылетает ошибка, что невозможно сделать каст System.Object[] в System.Guid.

Ответы

Ответов пока нет.