Search code examples
c#.netunit-testingvisual-studio-2015nunit

Unit testing service that requires ODataQueryOptions


In attempts to do some test-driven-development, I've created the most basic, buildable method:

public class NoteService : INoteService
{
    public IEnumerable<Annotation> GetNotes(ODataQueryOptions oDataQueryOptions)
    {
        return new List<Annotation>();
    }
}

When trying to unit test it, it seems impossible to create an instance of ODataQueryOptions:

[TestFixture]
public class NoteServiceTests
{
    [Test]
    public void GetNotes_Returns_IEnumerable_Of_Notes()
    {
        var sut = new NoteService();
        var queryOptions = new ODataQueryOptions(new ODataQueryContext(new EdmCoreModel(), new EdmCollectionType())// new new new etc??
                    Assert.That(() => sut.GetNotes(options), Is.InstanceOf<IEnumerable<Annotation>>());

    }
}

How do you create a simple instance of the object ODataQueryOptions in order to inject it for unit tests?


Solution

  • Will this work?

    var request = new HttpRequestMessage(HttpMethod.Get, "");
    
    var context = new ODataQueryContext(EdmCoreModel.Instance, typeof(int));
    
    var options = new ODataQueryOptions(context, request);