У меня есть проект ASP.NET MVC4 Web API с контроллером, наследующим ApiController, который принимает параметр ODataQueryOptions как один из его входов.
Я использую NUnit и Moq для тестирования проекта, которые позволяют мне настраивать сохраненные ответы из соответствующих методов репозитория, используемых ApiController. Это работает, как в:
[TestFixture]
public class ProjectControllerTests
{
[Test]
public async Task GetById()
{
var repo = new Mock<IManagementQuery>();
repo.Setup(a => a.GetProjectById(2)).Returns(Task.FromResult<Project>(new Project()
{
ProjectID = 2, ProjectName = "Test project", ProjectClient = 3
}));
var controller = new ProjectController(repo.Object);
var response = await controller.Get(2);
Assert.AreEqual(response.id, 2);
Assert.AreEqual(response.name, "Test project");
Assert.AreEqual(response.clientId, 3);
}
}
Проблема заключается в том, что для использования этого шаблона мне нужно передать соответствующие параметры запроса на контроллер, а также репозиторий (это было на самом деле моим намерением). Однако в случае ODataQueryOptions - принятия методов ApiController, даже в тех случаях, когда я хотел бы использовать только параметры по умолчанию для ODataQueryOptions, мне нужно знать, как их создать. Это становится сложно:
- ODataQueryOptions не реализует интерфейс, поэтому я не могу издеваться над ним напрямую.
- Для конструктора требуется реализация System.Web.Http.OData.ODataQueryContext, которая требует реализации чего-то, реализующего Microsoft.Data.Edm.IEdmModel, для которого документации недостаточно, а Visual Studio 2012 Find References и View Call Hierarchy не обеспечивают понимание (что реализует этот интерфейс?).
Что мне нужно сделать/Есть ли лучший способ сделать это?
Спасибо.