Мне нужно провести модульное тестирование метода, который возвращает тип, который я не могу легко подделать или создать.Тип реализует IQueryable<T>
, который я изначально думал, что мог бы использовать в своих интересах, но я не понимаю, как на этом этапе.
Например:
public sealed class MyTrickyClass<T> : IQueryable<T>
{
...
}
public MyTrickyClass<T> GetData()
{
return repository.GetAllData();
}
и мой модульный тест
[Test Method]
public void CanGetData()
{
var data = (new List<Record>() { new Record() }).AsQueryable();
var mockRepository = new Mock<IRepository<Record>>();
mockRepository.Setup(s => s.GetAllData()).Returns(data);
MyService service = new MyService(mockRepository.Object);
var result = service.GetData();
Assert.IsNotNull(result);
}
Это не скомпилируется, потому что тип возвращаемого значения GetAllData () - MyTrickyClass<T>
.Если я попытаюсь привести data
к типу MyTrickyClass<Record>
, приведение не удастся.
Все это имеет смысл, но это заставляет меня задуматься, каково правильное решение.Какие есть обходные пути для такой ситуации?Возможно, я смогу изменить MyTrickyClass, но в идеале я хотел бы найти решение, которое оставляет его в покое.