我们目前正在开发一个大量使用PostgreSQL的应用程序。在大多数情况下,我们使用SQLAlchemy访问数据库,这非常有效。对于测试,可以模拟或在没有数据库访问的情况下使用相关对象。但是系统的某些部分运行非标准查询。这些子系统必须创建临时表,插入大量行,然后将数据合并回主表。
目前这些子系统中有一些SQL语句,但这使得相关的类与数据库紧密耦合,这反过来又使单元测试变得更加困难。
基本上我的问题是,有没有解决这个问题的设计模式?我唯一能想到的就是将这些SQL语句放入一个单独的类中,并将一个实例传递给另一个类。这样我可以模拟单元测试的查询类,但它仍然感觉有点笨拙。有更好的方法吗?
答案 0 :(得分:0)
所以在玩了一些之后我现在有了一个体面的解决方案。我把这个课分成三个不同的类:
当我实例化我的逻辑类时,我提供了上述类的实例。它工作正常,抽象有点漏洞(特别是上下文管理器),但我现在至少可以正确地测试逻辑。