我正在使用配置文件来获取我的数据库的信息。它始终获取主机名,然后确定要从此配置文件中使用的数据库选项。我想能够判断我是否在这里的单元测试中并使用内存sqlite数据库。有没有办法告诉我是否在单位测试中,还是我必须找到不同的方式?
答案 0 :(得分:3)
使用IoC将数据库依赖项注入您的类。这应该通过在类的构造函数中处理一个存储库对象来完成。请注意,您不一定需要IoC容器来执行此操作。您只需要一个存储库接口和两个存储库实现。
注意:在Python中,IoC的工作方式略有不同。有关详细信息,请参阅http://code.activestate.com/recipes/413268/。
答案 1 :(得分:1)
使用某种数据库配置并配置要使用的数据库,并在单元测试期间配置内存数据库。
答案 2 :(得分:0)
这是一种蛮力,但它有效。有一个代码检查的环境变量UNIT_TEST,并将其设置在单元测试驱动程序中。
答案 3 :(得分:0)
正如Robert Harvey指出的那样,如果您可以将设置传递给组件而不是让组件自行查找它会更好。这允许您通过提供另一个对象来交换设置,即
TestComponent(TestSettings())
而不是
TestComponent(LiveSettings())
或者,如果你想使用配置文件,
TestComponent(Settings("test.conf"))
而不是
TestComponent(Settings("live.conf"))
答案 4 :(得分:0)
我建议使用模拟库,例如mocker。而且,仅供参考,编写代码以检查您是否处于单元测试中是一种糟糕的代码味道。您的单元测试应该在您编写代码时执行正在测试的代码。