如何在UnitTest类中初始化假内存数据库上下文,以便使用CatDbContext测试存储库。我得到了错误: OneTimeSetUp:没有找到合适的构造函数。我需要如何初始化数据库,用于测试catRepository。
namespace CatsCRUDAppTest
{
public class CatRepositoryTests
{
private IRepository<Cat> catRepository;
private FakeDbContext context;
private Cat defaultCat = new Cat() {Id = 0, Name = "name" };
// OneTimeSetUp: No suitable constructor was found
public CatRepositoryTests(FakeDbContext fake)
{
catRepository = new CatRepository(fake);
context = fake;
}
//
[Test]
public void CreateTrueTest()
{
Cat cat = defaultCat;
catRepository.Create(cat);
context.SaveChanges();
Cat existingCat = context.Find<Cat>(cat.Id);
Assert.IsNotNull(existingCat);
}
}存储库类:该类使CatDbContext初始化。
namespace DAL.Repositories
{
public class CatRepository : IRepository<Cat>
{
private CatDbContext db;
public CatRepository(CatDbContext context)
{
db = context;
}
public async void Create(Cat item)
{
await db.Cats.AddAsync(item);
}FakeDbContext:
public class FakeDbContext : CatDbContext
{
public FakeDbContext(DbContextOptions<CatDbContext> options) : base(options)
{
}
public DbSet<Cat> Cats { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseInMemoryDatabase(databaseName: "FakePersonalSiteDbContext");
}
}发布于 2022-03-04 08:31:32
需要使用dbBuilder。
private IRepository<Cat>? catRepository;
private FakeDbContext? context;
[SetUp]
public void SetUp()
{
var dbBuilder = new DbContextOptionsBuilder<CatDbContext>();
dbBuilder.UseInMemoryDatabase(databaseName: "FakeDbContext");
context = new (dbBuilder.Options);
catRepository = new CatRepository(context);
}https://stackoverflow.com/questions/71337646
复制相似问题