假设我们有典型的存储库
public class Repository:IRepository<Entity>
{
public Entity GetById(int id)
{
//blah
}
public IEnumerable<Entity> All()
{
//blah
}
public void Insert(Entity entity)
{
}
public void Update(Entity entity)
{
//blah
}
public void Delete(Entity entity)
{
//blah
}
}
使用MSTest,我想测试存储库插入和更新实体的能力。只要它是具体的存储库,我就是在测试一个真正的数据库。
所以,当我测试Insert方法时 - 策略是明确的
但是当我想到Update方法测试时,这一切都变得有些棘手。 主要问题是
看起来变通方法需要一些不必要的代码,测试会变得臃肿。 有没有任何优雅的解决方案?
答案 0 :(得分:3)
使用ClassInitialize TestInitialize以及ClassCleanup和TestCleanup使用知名实体预填充数据库。然后针对它们运行Update()
测试。
不确定如何解释“不必要的代码”......看起来您将不得不做一些事情来填充数据库以测试Update()
方法;至少使用上面列出的属性可以实现初始化和清理数据库所需的逻辑,而不会污染实际的测试方法。