我正在为我的 Web API 编写单元测试,除非删除包含(从方法中热切加载),否则无法让测试通过。我正在使用内存数据库来提供dbcontext,但无法弄清楚为什么它没有返回数据。预先感谢任何帮助或建设性批评
这是我正在尝试测试的方法。
注意:如果我注释掉这些.include语句,它就会通过测试。
public async Task<LibraryAsset> GetAsset(int assetId)
{
var asset = await _context.LibraryAssets
.Include(p => p.Photo)
.Include(p => p.Category)
.Include(a => a.AssetType)
.Include(s => s.Status)
.Include(s => s.Author)
.FirstOrDefaultAsync(x => x.Id == assetId);
return asset;
}
Run Code Online (Sandbox Code Playgroud)
DbContext这是使用内存数据库的基础:
public DataContext GetDbContext()
{
var builder = new DbContextOptionsBuilder<DataContext>();
if (useSqlite)
{
// Use Sqlite DB.
builder.UseSqlite("DataSource=:memory:", x => { });
}
else
{
// Use In-Memory DB.
builder.UseInMemoryDatabase(Guid.NewGuid().ToString());
}
var DataContext = …Run Code Online (Sandbox Code Playgroud)