是否可以嘲笑企业库5版本的'数据库'?如果是这样......怎么样?嘲笑企业库5'数据库'
有没有IDatabase接口(这是一个谜,因为我虽然微软P将更多地暴露这种接口暴露测试性的好处)。
我有一个使用EntLib 5数据访问应用程序块的Repository类。
我是复古适合单元测试到这个类,并需要嘲笑依赖于数据库对象。这个类是现在通过其构造函数传递数据库,并使用数据库对象在Db上执行操作。
我使用以下方法来解决数据库的实例来传递给我的信息库:
Container.RegisterType<IFooRepository, FooRepository>(
new InjectionConstructor(
EnterpriseLibraryContainer.Current.GetInstance<Database>("FooDbConnStr")
)
);
我不希望将这些单元测试成为集成测试。
我已经尝试过使用Moq创建数据库类型的动态模拟,但事实证明这很棘手,因为数据库在其构造函数中需要连接字符串和DbProviderFactory。也许,如果有这样的事情,一个MockDbProviderFactory。
这是单元测试正在采取以下形式:
题外话:我也发现使用一个静态的Logger类很难测试的。希望我在这里错过了一些技巧,但是我必须说我对迄今为止的可测试性感到失望。
对不起我的无知,但你有一个接口为您的存储库,岂不是更容易嘲笑IFooRepository而不是数据库? – thiagoleite 2012-07-13 17:24:48
我需要在此场景中模拟EntLib数据库实例,以便单独测试IFooRepository的实现。 – holsee 2012-07-17 22:06:07