我们目前正在开发一个大量使用 PostgreSQL 的应用程序。在大多数情况下,我们使用 SQLAlchemy 访问数据库,这非常有效。为了测试相关对象可以被模拟,或者在没有数据库访问的情况下使用。但是系统的某些部分运行非标准查询。这些子系统必须创建临时表插入大量行,然后将数据合并回主表。
目前这些子系统中有一些 SQL 语句,但这使得相关类与数据库紧密耦合,这反过来又使单元测试变得更加困难。
基本上我的问题是,有没有解决这个问题的设计模式?我唯一能想到的就是将这些 SQL 语句放入一个单独的类中,然后将一个实例传递给另一个类。这样我可以模拟单元测试的查询类,但它仍然感觉有点笨拙。有一个更好的方法吗?