public void CallDbSetFakeDirectly()
        {
            var context = ContextFaker.CreateContext<TestContext>();

            var data = new Acorn[] { };

            IQueryable<Acorn> dataQueryable = data.AsQueryable();
            IEnumerator<Acorn> dataEnumerator = dataQueryable.GetEnumerator();

            var mockSet = A.Fake<DbSet<Acorn>>(builder =>
            {
                builder.Implements(typeof(IDbAsyncEnumerable<Acorn>));
                builder.Implements(typeof(IQueryable<Acorn>));
            });

            var mockEnumerable = (IDbAsyncEnumerable<Acorn>)mockSet;

            A.CallTo(() => (mockEnumerable).GetAsyncEnumerator())
                .Returns(new TestDbAsyncEnumerator<Acorn>(dataEnumerator));

            A.CallTo(() => ((IQueryable<Acorn>)mockSet).Provider)
                .Returns(new TestDbAsyncQueryProvider<Acorn>(dataQueryable.Provider));

            A.CallTo(() => ((IQueryable<Acorn>)mockSet).Expression).Returns(dataQueryable.Expression);
            A.CallTo(() => ((IQueryable<Acorn>)mockSet).ElementType).Returns(dataQueryable.ElementType);
            A.CallTo(() => ((IQueryable<Acorn>)mockSet).GetEnumerator()).Returns(dataEnumerator);

            A.CallTo(() => context.Acorns).Returns(mockSet);

            Assert.Empty(context.Acorns.ToArray());
        }
        public void CallDbSetFakeDirectly()
        {
            var context = ContextFaker.CreateContext <TestContext>();

            var data = new Acorn[] { };

            IQueryable <Acorn>  dataQueryable  = data.AsQueryable();
            IEnumerator <Acorn> dataEnumerator = dataQueryable.GetEnumerator();

            var mockSet = A.Fake <DbSet <Acorn> >(builder =>
            {
                builder.Implements(typeof(IDbAsyncEnumerable <Acorn>));
                builder.Implements(typeof(IQueryable <Acorn>));
            });

            var mockEnumerable = (IDbAsyncEnumerable <Acorn>)mockSet;

            A.CallTo(() => (mockEnumerable).GetAsyncEnumerator())
            .Returns(new TestDbAsyncEnumerator <Acorn>(dataEnumerator));

            A.CallTo(() => ((IQueryable <Acorn>)mockSet).Provider)
            .Returns(new TestDbAsyncQueryProvider <Acorn>(dataQueryable.Provider));

            A.CallTo(() => ((IQueryable <Acorn>)mockSet).Expression).Returns(dataQueryable.Expression);
            A.CallTo(() => ((IQueryable <Acorn>)mockSet).ElementType).Returns(dataQueryable.ElementType);
            A.CallTo(() => ((IQueryable <Acorn>)mockSet).GetEnumerator()).Returns(dataEnumerator);

            A.CallTo(() => context.Acorns).Returns(mockSet);

            Assert.Empty(context.Acorns.ToArray());
        }