В этом случае лучше всего не указывать NSubstitute и кодировать это явно:
public class TestingRepository : ITestRepository {
private readonly IList<ITestList> data;
public TestingRepository(IList<ITestList> list) => data = list;
public ITestList Get(Guid id) => data.First(x => x.Id == id);
}
Это коротко, понятно и не требует, чтобы читатели знали о каких-либо конкретных библиотеках. Поскольку вы хотите, чтобы ваш тестовый репозиторий работал почти как настоящий, я думаю, что в этом контексте имеет смысл использовать реальный класс (а не сгенерированный макет).
Вы также можете использовать библиотеку макетов сделать это, но это немного сложнее (хотя это может быть полезно для более сложных интерфейсов и / или если вы также хотите утверждать, что были получены определенные вызовы). Вот синтаксис NSubstitute для , возвращающего вычисленное значение из функции :
testRespository
.Get(Arg.Any<Guid>())
.Returns(x => testList.First(test => test.Id == x.Arg<Guid>()));
Надеюсь, это поможет.