nde*_*eau 1 testing integration-testing ruby-on-rails capybara
我是在 Rails 中测试的新手,我不明白为什么或何时应该使用夹具(或工厂),而不仅仅是为我的测试数据库播种并查询它来运行测试?
在许多情况下,在 dev 和 test env 中拥有相同的数据应该更快、更容易。
例如,如果我想测试一个索引页,我应该通过工厂创建 100 条记录还是应该用 100 条记录为数据库做种子?
我有人可以澄清这一点,这会很棒。
谢谢!
这其实是一个更深层次的问题,如何高效测试,你会发现很多不同的意见。
在单元测试中避免使用数据库的原因仅仅是速度。数据库操作很慢。一个测试可能看起来并不慢,但是如果您正在进行持续集成(正如您应该的那样),或者当您进行快速更改并且只想看看会发生什么时,这些延迟就会加起来。所以更喜欢模拟而不是真正的单元测试代码。
然后你自己的集成测试应该访问内存数据库而不是你的真实数据库——出于同样的原因,速度。这些将比您的模拟测试慢,但仍然比访问真实数据库要快。在开发时,构建-测试-部署周期需要尽可能快。请注意,有些人也称这些为单元测试。我不会,但我想这只是语义。
前两种测试是由开发人员为开发人员进行的。
然后测试人员将访问真实数据库,该数据库将填充由测试人员和主题专家定义的测试数据。也有很多聪明的方法可以加快速度,但这将是他们测试代码与类似生产的数据库的集成的地方。如果您所有的内存数据库测试都通过了并且这里出了点问题,那么您就会知道这与数据库配置、特定于供应商的 SQL 等有关,而不是根本上的问题。您还将第一次体验表演的感觉。
请注意,我在这里所说的一切都是有争议的。但希望它能澄清你应该考虑什么时候做某些事情以及为什么。
归档时间: |
|
查看次数: |
474 次 |
最近记录: |