php—如何测试一个可以向查询添加数十个不同过滤器的类?

rqqzpn5f  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(276)

我正在尝试将一个页面从一个旧系统迁移到一个新系统,因为我们尝试对所有内容进行单元测试。
该页面包含大约40个高级搜索过滤器,用于在我们的产品表及其相关表中进行搜索。
其中一些是简单的字段搜索,但另一些创建新的联接或子查询。
我不知道如何对存储库进行单元测试,该方法接收用户提供的过滤器数组,并应返回相应的产品,在该方法内部使用orm和dql生成所有查询。
我想到了以下几点:
逐个单元测试过滤器
问题:需要大量的测试,不包括过滤器混合在一起。
将输出的mysql代码与预期的输出进行比较
问题:不灵活,不测试实际结果。
那你打算怎么测试这个呢?

7d7tgy0s

7d7tgy0s1#

除非您能保证代码的顺序,否则按预期检查mysql代码将需要很长时间。相反,你可以:
分别添加每个筛选器。检查查询是否符合预期,以及它是否将执行。理想情况下,检查记录以获得预期的记录
将多个项目添加到一起。检查查询是否至少包含您希望添加的代码(因此您不必保证添加的顺序),以及查询是否执行。
对于第2部分,如果您可以自动执行这些检查,那么就更好了。检查所有可能的添加几乎是不可能的,因为有1099511627775个组合,从只选择一个过滤器到选择全部40个。其中的每一个都需要测试以生成包含您期望的内容的sql,但也需要正确运行。
有时单元测试是不可能的。有时候你必须测试“够了”,不管你怎么衡量。

相关问题