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));
誰もがなぜこれが起こっているの手掛かりを持っている:それは私には、次のモックを追加した動作するように?
サービスに渡されるコンテキストを模倣し、サービスの動作を定義するため意味がありません –