public async void TestGetAllAsync() { Mock <IUnitOfWork> uowMock = new Mock <IUnitOfWork>(); Mock <IRepository <Post> > repoMock = new Mock <IRepository <Post> >(); var posts = Enumerable.Range(0, 5).Select(x => new Post() { Id = x, Url = string.Format("www.someurl{0}", x) }).ToList(); repoMock.Setup(x => x.GetAllAsync()).Returns(Task.FromResult(posts.AsQueryable())); SomeService service = new SomeService(uowMock.Object, repoMock.Object); var retrievedPosts = await service.GetAllAsync(); repoMock.Verify(m => m.GetAllAsync(), Times.Once()); CollectionAssert.AreEqual(posts, retrievedPosts); }
public async Task TestGetAllAsync() { var posts = Enumerable.Range(0, 5).Select( x => new Post() { Url = string.Format("www.someurl{0}", x) }).AsQueryable(); var dbsetMock = new Mock <DbSet <Post> >(); dbsetMock.As <IDbAsyncEnumerable <Post> >() .Setup(m => m.GetAsyncEnumerator()) .Returns(new TestDbAsyncEnumerator <Post>(posts.GetEnumerator())); dbsetMock.As <IQueryable <Post> >() .Setup(m => m.Provider) .Returns(new TestDbAsyncQueryProvider <Post>(posts.Provider)); dbsetMock.As <IQueryable <Post> >().Setup(m => m.Expression).Returns(posts.Expression); dbsetMock.As <IQueryable <Post> >().Setup(m => m.ElementType).Returns(posts.ElementType); dbsetMock.As <IQueryable <Post> >().Setup(m => m.GetEnumerator()).Returns(posts.GetEnumerator()); var mockContext = new Mock <SachaContextTestDouble>(); mockContext.Setup(c => c.Posts).Returns(dbsetMock.Object); var service = new SomeService(mockContext.Object); var retrievedPosts = await service.GetAllAsync(); var postsList = posts.ToList(); Assert.AreEqual(posts.Count(), retrievedPosts.Count()); Assert.AreEqual(postsList[0].Url, retrievedPosts[0].Url); Assert.AreEqual(postsList[4].Url, retrievedPosts[4].Url); }