public void FetchAllScripts_Test() { //Arange var stubFactory = new Mock <IPrompterDbContextFactory>(); var stubContext = new Mock <IPrompterDbContext>(); var scriptDbSet = new Mock <IDbSet <Script> >(); var script = new Script { ScriptId = 1, Title = "test", OptionsId = 1, Sections = new List <Section> { new Section { Order = 2, }, new Section { Order = 1, } } }; var fakeScripts = new List <Script> { script, new Script { Sections = new List <Section>() } }.AsQueryable(); stubFactory.Setup(s => s.Create()) .Returns(stubContext.Object); scriptDbSet.Setup(s => s.Provider) .Returns(fakeScripts.Provider); scriptDbSet.Setup(s => s.Expression) .Returns(fakeScripts.Expression); scriptDbSet.Setup(s => s.GetEnumerator()) .Returns(fakeScripts.GetEnumerator()); stubContext.Setup(s => s.Scripts) .Returns(scriptDbSet.Object); var service = new ScriptService(stubFactory.Object); //Act var actual = service.FetchAllScripts(); //Assert Assert.That(actual.Count, Is.EqualTo(2)); Assert.That(actual.Contains(script)); Assert.That(SectionsAreOrdered(actual[0]), Is.True); Assert.That(actual[0].Title == "test"); stubContext.Verify(s => s.Scripts, Times.Once); }