Я новичок в использовании Moq и пытаюсь получить значение, переданное в метод Moq'd для использования в методе Returns.
Я успешно выполнил следующее.
_repositoryMock.Setup(x => x.GetByOrderId(It.IsAny<string>()))
.Returns((string id) => Task.FromResult(
new Order
{
Id = id
}));
Использование в коде:
var order = _repository.GetByOrderId("123");
Вышеописанное работало нормально, и id
, переданный в метод Returns, - это тот же идентификатор, который я передал в метод GetByOrderId в моем коде.
Однако я хотел бы сделать свой репозиторий более универсальным c, поэтому я хочу изменить свой GetByOrderId на FindFirstOrDefault, который принимает предикат выражения вместо идентификатора.
Использование как это:
var order = _repository.FindFirstOrDefault( o => x.Id == "123");
С изменением юнит-теста на это:
_repositoryMock.Setup(moq => moq.FindFirst(It.IsAny<Expression<Func<Order, bool>>>()))
.Returns((Expression<Func<Order, bool>> expression) => Task.FromResult(
new Order
{
Id = // ... HOW TO GET ID LIKE THE FIRST SAMPLE?
}));
Так как мне получить этот идентификатор? «123». Есть ли способ?