3

我们目前正在开发一个大量使用 PostgreSQL 的应用程序。在大多数情况下,我们使用 SQLAlchemy 访问数据库,这非常有效。为了测试相关对象可以被模拟,或者在没有数据库访问的情况下使用。但是系统的某些部分运行非标准查询。这些子系统必须创建临时表插入大量行,然后将数据合并回主表。

目前这些子系统中有一些 SQL 语句,但这使得相关类与数据库紧密耦合,这反过来又使单元测试变得更加困难。

基本上我的问题是,有没有解决这个问题的设计模式?我唯一能想到的就是将这些 SQL 语句放入一个单独的类中,然后将一个实例传递给另一个类。这样我可以模拟单元测试的查询类,但它仍然感觉有点笨拙。有一个更好的方法吗?

4

1 回答 1

0

因此,在玩了更多之后,我现在有了一个不错的解决方案。我将有问题的课程分为三个单独的课程:

  • 提供对所需数据的访问的类;
  • 支持临时表内容的上下文管理器;
  • 以及具有所有逻辑的旧类(没有数据库内容);

当我实例化我的逻辑类时,我为它提供了上述类的一个实例。它工作正常,抽象有点泄漏(尤其是上下文管理器),但我现在至少可以正确地对逻辑进行单元测试。

于 2013-06-10T06:04:58.030 回答