![](/img/trans.png)
[英]Entity Framework Core, UD sql function throws System.NotImplementedException: 'The method or operation is not implemented.'
[英]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.