Я пытаюсь использовать NSubstitute, чтобы высмеять возвращаемое значение из подстановки, но я не могу получить замену, чтобы вернуть правильное значение, потому что сигнатура метода использует Func.Mock результат от Func с NSubstitute
Я видел эти вопросы, но не могу заставить его работать с моим Func.
Mocking Action<T> with NSubstitute
Mocking out expression with NSubstitute
интерфейс Я пытаюсь издеваться это (несколько simplyfied):
public interface IOrgTreeRepository<out T> where T : IHierarchicalUnit
{
T FirstOrDefault(Func<T, bool> predicate);
}
Я подставляя его NSubstitute следующим образом:
_orgTreeRepository = Substitute.For<IOrgTreeRepository<IOrganizationUnit>>();
А потом я пытаюсь изменить обратное v ALUE так:
_orgTreeRepository.FirstOrDefault(Arg.Is<Func<IOrganizationUnit, bool>>(x => x.Id== _itemsToUpdate[0].Id)).Returns(existingItems[0]);
Но это просто возвращает прокси-объект вместо моего определенного объекта в existingItems.
Однако, благодаря другим вопросам, мне удалось заставить это работать, но это мне не помогает, так как мне нужен конкретный элемент каждый раз.
_orgTreeRepository.FirstOrDefault(Arg.Any<Func<IOrganizationUnit, bool>>()).Returns(existingItems[0]); // Semi-working
Я предполагаю, что он рассматривает выражение лямбда как своего рода абсолютную ссылку и поэтому пропускает ее? Можно ли каким-либо образом высмеять возвращаемое значение?
Ну, это отличное решение моей проблемы. Большое спасибо. – smoksnes
Я бы никогда не догадался! Большое спасибо. – Invvard