【发布时间】:2023-03-20 04:32:01
【问题描述】:
我喜欢Faker,我一直在我的seeds.rb 中使用它来用看起来真实的数据填充我的开发环境。
我也刚开始使用Factory Girl,这也节省了很多时间 - 但是当我在网上搜索代码示例时,我没有看到太多证据表明人们将两者结合起来。
问。人们为什么不在工厂使用faker有充分的理由吗?
我的感觉是,这样做可以通过每次随机播种(但可预测的)数据来提高测试的稳健性,这有望增加出现错误的机会。
但也许这是不正确的,要么对工厂进行硬编码没有任何好处,要么我没有看到潜在的陷阱。这两种宝石应该或不应该结合有充分的理由吗?
【问题讨论】:
-
为什么要在每次创建测试模型时动态生成数据?这只是开销
-
同意,测试性能会受到影响 - 但在复杂的应用程序上这样做不值得,尤其是一个有大量验证的应用程序,以检查我没有写一些愚蠢的东西,允许
firstName: Michal但不是firstName: Huw,Faker 的多样性肯定会带来更稳健的测试吗? -
这称为边缘案例测试。仍然不需要随机数据
-
但是您不需要提前知道所有可能要测试的边缘情况吗?
-
当然可以!但看。假设您使用随机数据进行测试,并且想要比较分配给 Person 模型实例的名称是否正确。如果名字是Faker生成的,你想怎么做?将模型与自身进行比较?这是没有意义的。单元测试的重点是将代码输出与已知值进行比较!
标签: ruby-on-rails ruby factory-bot faker