Почему не получается сделать мок FindAsync с помощью NSubstitute?
Сделал 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
.
Источник: Stack Overflow на русском