public void AddStudent_GivenValidStudent_ShouldSaveAndAddOneStudent() { //Arrange var testStudent = new Student { FirstMidName = "Carson", LastName = "Alexander", EnrollmentDate = DateTime.Parse("2005-09-01") }; var data = new List <Student> { new Student { FirstMidName = "Peggy", LastName = "Justice", EnrollmentDate = DateTime.Parse("2001-09-01") }, new Student { FirstMidName = "Meredith", LastName = "Alonso", EnrollmentDate = DateTime.Parse("2002-09-01") }, }; var mockSet = GetQueryableMockDbSet(data.ToArray()); mockSet.Setup(x => x.Include(It.IsAny <string>())).Returns(mockSet.Object); mockSet.Setup(x => x.Add(testStudent)).Callback(() => data.Add(testStudent)); var mockContext = new Mock <IDbContext>(); mockContext.Setup(con => con.Students).Returns(mockSet.Object); mockContext.Setup(con => con.SaveChanges()).Returns(1); var classUnderTest = new MockEFService(mockContext.Object); //Action var result = classUnderTest.AddStudent(testStudent); //Assert result.ShouldBe(1); data.Count.ShouldBe(3); data.Any(x => x.LastName == testStudent.LastName).ShouldBe(true); mockContext.Verify(x => x.SaveChanges(), Times.Once); }