假设我们有典型的存储库
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 方法时 - 策略很明确
- 创建新实体
- 保存
- 通过 id 获取实体
- 断言实体由存储库返回
但是当我想到更新方法测试时,这一切都变得有些棘手。主要问题是
- 如何确保数据库已经存储了我可以获取并尝试更新的对象?
- 如何针对空数据库测试更新?
看起来解决方法需要一些不必要的代码,并且测试会变得臃肿。有什么优雅的解决方案吗?