簡體   English   中英

未實施該方法或操作。 Microsoft.EntityFrameworkCore.DbSet`1.System.Linq.IQueryable.get_Provider()

[英]The method or operation is not implemented. Microsoft.EntityFrameworkCore.DbSet`1.System.Linq.IQueryable.get_Provider()

我有一個在 .Net Framework 上運行良好的測試方法,但是當它到達鏈接查詢時在 EntityFrameworkCore 上生成錯誤。 錯誤是“方法或操作未實現。Microsoft.EntityFrameworkCore.DbSet`1.System.Linq.IQueryable.get_Provider()”

這是我的測試方法

    [Fact]
    public void UserNeverLoggedOn2_Test()
    {
        var userDataSet = new List<User>
        {
            new User
            {
                UserId = 1,
                IsActive = true,
                CreatedBy = "WBrown",
                CreatedDate = new DateTime(2019, 5, 1,0,0,0,DateTimeKind.Utc),
                LastAccessDate = DateTime.MinValue,
                FirstName = "Joe",
                LastName = "Doe"
            },
            new User
            {
                UserId = 2,
                IsActive = true,
                CreatedBy = "WBrown",
                CreatedDate = new DateTime(2017, 5, 1),
                LastAccessDate = DateTime.MinValue,
                LastActionTaken = DateTime.Now,
                FirstName = "Jane",
                LastName = "Smith"
            }

        }.AsQueryable();

      
        var mockUserSet = Mock.Create<DbSet<User>>() ;
        Mock.Arrange(() => ((IQueryable<User>)mockUserSet).Provider).Returns(() => userDataSet.Provider);
        Mock.Arrange(() => ((IQueryable<User>)mockUserSet).Expression).Returns(() => userDataSet.Expression);
        Mock.Arrange(() => ((IQueryable<User>)mockUserSet).ElementType).Returns(() => userDataSet.ElementType);
        Mock.Arrange(() => ((IEnumerable<User>)mockUserSet).GetEnumerator()).Returns(() => userDataSet.GetEnumerator());


        var dbContextMock = Mock.Create<EFDbContext>(); // 
        Mock.Arrange(() => dbContextMock.Users).Returns(() => mockUserSet);

        //Act
        IQueryable<User> query = from u in dbContextMock.Users
                                 .Where u.UserId = 1
                                 select u;

        Assert.NotNull(result);
        Assert.Equal(1, result.First().UserId);
    }

不知道為什么它在 .Net Framework 上工作而在 .NetCore 上失敗。

我發現了問題所在。 Telerik.JustMock 在模擬 Linq 查詢等高級對象時需要啟用分析器。 我啟用了探查器並且單元測試成功運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM