F0r*_*gan 10 .net c# unit-testing mocking mongodb
我想做tdd并使用mongodb作为数据库.但我无法解决嘲弄mongodb的问题.有没有能力在.NET中模拟mongodb进行单元测试?
更新
我找到了很好的阅读博客.你可以在这里找到它:
cas*_*One 14
您应该在MongoDB 之上模拟一个层,而不是模拟MongoDB.
您可能需要考虑一个接口,该接口公开存储库上与底层数据存储无关的操作.例如,您可能需要一个抽象出Student类型操作的接口,如下所示:
public interface IStudentOperations
{
void Add(Student student);
}
Run Code Online (Sandbox Code Playgroud)
当您创建其他依赖项时,您将注入上述接口的实例,或者您选择的更高级别的抽象.
关键是,不要直接暴露MongoDB .
一旦你这样做,你可以模拟你想要创建的接口,有一个实现用于测试模拟实现,然后是一个实际的实现与它自己的测试,以验证实现的操作是正确的,当底层实现是MongoDB的.
尽管可以模拟MongoDB的大多数类(如方法所示virtual),但您可以获得持久性不可知的好处; 如果你想切换到说,CouchDB或elasticsearch,你不必更改对这些接口的调用,你只需创建一个新的实现.
因为您正在尝试测试存储库的实现,所以您通常很好,如前所述,MongoDB的大部分功能都是virtual,这对大多数模拟库都很友好.
也就是说,您必须确保将其传递MongoDatabase 到存储库(而不是在存储库中创建),以便在单元测试中,您可以创建相应的模拟,然后将其传递到存储库实现中进行测试.
| 归档时间: |
|
| 查看次数: |
12793 次 |
| 最近记录: |