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



我正在尝试将页面从旧系统迁移到新系统,因为我们尝试对所有内容进行单元测试。

该页面包含大约 40 个高级搜索过滤器,可在我们的产品表及其相关表中搜索。

其中一些是简单的字段搜索,但其他一些则创建新的联接或子查询。

我不知道如何对存储库进行单元测试,该方法接收用户提供的过滤器数组,并应返回相应的产品,内部使用 Doctrine ORM 和 DQL 生成所有查询。

我虽然有以下几点:

  • 单元测试逐个筛选
    • 问题:需要进行大量测试,并且未涵盖混合在一起的过滤器。
  • 将输出的 MySQL 代码与预期输出进行比较
    • 问题:不灵活,不测试实际结果。

那么,您将如何对其进行测试呢?

除非你能保证代码的顺序,否则检查MySQL代码是按预期进行的,需要很长时间才能检查。 相反,您可以:

  1. 单独添加每个筛选器。 检查查询是否符合预期,以及查询是否将执行。 理想情况下,检查记录中的预期记录
  2. 将多个项目添加在一起。 检查查询是否至少包含要添加的代码(因此不必保证添加顺序(,以及查询是否执行。

对于第 2 部分,如果您可以自动执行此操作以运行检查,那就更好了。 检查所有可能的添加几乎是不可能的,因为从仅选择 1 个过滤器到选择所有 40 个过滤器,有 1,099,511,627,775 种组合。 其中每一个都需要进行测试,以生成包含您期望的 SQL,但也要正确运行。

有时,对一切都是不可能的。 有时你必须测试"足够",无论你如何衡量。

相关内容

  • 没有找到相关文章

最新更新