1

ソース IQueryable は IDbAsyncEnumerable を実装していません。IDbAsyncEnumerable を実装するソースのみが、Entity Framework の非同期操作に使用できます。詳細については、 http: //go.microsoft.com/fwlink/?LinkId=287068を参照してください。

私はNUnitが初めてです。非同期クエリの Nunit テスト ケースを開発しました。しかし、私は上記のエラーを取得しています。https://msdn.microsoft.com/en-us/data/dn314429.aspxリンクを参照しましたが、エラーを解決できませんでした

どんな種類の助けも大歓迎です!前もって感謝します!

パブリック インターフェイス IWork : IDisposable { IBlogRepository BlogRepository { get; }

    IDBContext Db { get; }
}

 public class BlogRepository : GenericRepository<Blog>, IBlogRepository
{

    internal ContainerRepository(IWork work)
        : base(work)
    {

    }
}
public interface IBlogRepository : IGenericRepository<Blog>
{

}
 [TestFixture] 
public class AsyncQueryTests 
{ 
    [Test] 
    public async Task GetAllBlogsAsync_orders_by_name() 
    { 
        using (var work = ObjectFactory.GetInstance<IWork>())
        {
        var data = new List<Blog> 
        { 
            new Blog { Name = "BBB" }, 
            new Blog { Name = "ZZZ" }, 
            new Blog { Name = "AAA" }, 
        }.AsQueryable(); 

        var mockSet = new Mock<DbSet<Blog>>(); 
        mockSet.As<IDbAsyncEnumerable<Blog>>() 
            .Setup(m => m.GetAsyncEnumerator()) 
            .Returns(new TestDbAsyncEnumerator<Blog>(data.GetEnumerator())); 

        mockSet.As<IQueryable<Blog>>() 
            .Setup(m => m.Provider) 
            .Returns(new TestDbAsyncQueryProvider<Blog>(data.Provider)); 

        mockSet.As<IQueryable<Blog>>().Setup(m => m.Expression).Returns(data.Expression); 
        mockSet.As<IQueryable<Blog>>().Setup(m => m.ElementType).Returns(data.ElementType); 
        mockSet.As<IQueryable<Blog>>().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator()); 

        var mockContext = new Mock<IWork>(); 
        mockContext.Setup(c => c.BlogRepository.GetQuery()).Returns(mockSet.Object); 
        ObjectFactory.Configure(cfg => cfg.For<IWork>().Use(mockContext.Object));

            foreach (var blog in mockSet.Object)
                {
                    mockContext.Object.BlogRepository.Add(blog);

                }

        var service = new BlogController(); 
        var blogs = await service.GetAllBlogsAsync(); 

        Assert.AreEqual(3, blogs.Count);           
    } 
} 

}

4

0 に答える 0