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);
        }
Ejemplo n.º 2
0
        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);
        }