public async Task VerifyTaskName() { // Arrange var contextOptions = new DbContextOptions <ProjectManagerDbContext>(); var mockContext = new Mock <ProjectManagerDbContext>(contextOptions); var taskRepository = new TaskDetailsRepository(mockContext.Object); IQueryable <Models.TaskDetailModel> taskDetailsList = new List <Models.TaskDetailModel>() { new Models.TaskDetailModel() { Id = 1, Name = "Task 1", Priority = 10 }, new Models.TaskDetailModel() { Id = 2, Name = "Task 2", Priority = 20 }, }.AsQueryable(); var mockSet = new Mock <DbSet <Models.TaskDetailModel> >(); mockSet.As <IAsyncEnumerable <Models.TaskDetailModel> >() .Setup(m => m.GetEnumerator()) .Returns(new TestAsyncEnumerator <Models.TaskDetailModel>(taskDetailsList.GetEnumerator())); mockSet.As <IQueryable <Models.TaskDetailModel> >() .Setup(m => m.Provider) .Returns(new TestAsyncQueryProvider <Models.TaskDetailModel>(taskDetailsList.Provider)); mockSet.As <IQueryable <Models.TaskDetailModel> >().Setup(m => m.Expression).Returns(taskDetailsList.Expression); mockSet.As <IQueryable <Models.TaskDetailModel> >().Setup(m => m.ElementType).Returns(taskDetailsList.ElementType); mockSet.As <IQueryable <Models.TaskDetailModel> >().Setup(m => m.GetEnumerator()).Returns(() => taskDetailsList.GetEnumerator()); mockContext.Setup(m => m.Tasks).Returns(mockSet.Object); // Act var taskDetails = await taskRepository.Get(2); // Assert Assert.Equal("Task 2", taskDetails.Name); }
public async Task VerifyUpdateSaveChangesCalledOnce() { // Arrange var contextOptions = new DbContextOptions <ProjectManagerDbContext>(); var mockContext = new Mock <ProjectManagerDbContext>(contextOptions); var taskRepository = new TaskDetailsRepository(mockContext.Object); var taskDetail = new Models.TaskDetailModel() { Id = 1, Name = "Task 1 ", Priority = 10 }; var mockSet = new Mock <DbSet <Models.TaskDetailModel> >(); mockContext.Setup(m => m.Tasks).Returns(mockSet.Object); // Act await taskRepository.Update(1, taskDetail); // Assert mockSet.Verify(m => m.Update(taskDetail), Times.Once); mockContext.Verify(m => m.SaveChangesAsync(System.Threading.CancellationToken.None), Times.Once); }