0
我嘲笑FindAsync通過下面的代碼:嘲諷FindAsync方法
var brands = new Mock<DbSet<Brand>>();
ConfigureTheDbSet(brands, brandData);
brands.Setup(b => b.FindAsync(It.IsAny<object[]>())) //substitution of the .SelectAsync(id) method
.Returns<object[]>(ids => brands.Object.FirstOrDefaultAsync(b => b.BrandId == (int) ids[0]));
,並一直工作正常,直到我說嘲諷的AsNoTracking上下文:
var mockContext = new Mock<ReportDbContext>();
mockContext.Setup(m => m.Set<Brand>()).Returns(brands.Object);
mockContext.Setup(m => m.Set<Brand>().AsNoTracking()).Returns(brands.Object);
而且FindAsync返回null。爲了使它工作,我添加了以下嘲弄:
mockContext.Setup(m => m.Set<Brand>().FindAsync(It.IsAny<object[]>()))
.Returns<object[]>(async d => await brands.Object.FindAsync(d));
任何人都有一個線索,爲什麼發生這種情況?
這沒有意義,因爲我嘲笑傳遞給服務的上下文,它定義了服務行爲 –