如果您为项目编写测试并使用
factory_bot生成测试数据,我将向您展示
factory_trace gem,这将帮助您使工厂和特性保持最新。
它是做什么的?
在测试启动期间,gem监视某些工厂的使用,并在执行结束时显示结果报告。
$ FB_TRACE=1 rspec total number of unique used factories & traits: 3 total number of unique unused factories & traits: 2 unused global trait with_email unused factory admin
项目整合
对于RSpec,安装gem就足够了,您可以使用它,对于任何其他测试器,只需执行简单的操作即可:
并行/分段执行
通常,如果测试需要很长时间,那么它们将在不同的部分中运行,并且为了使未使用工厂的数据正确,必须处理所有测试的统计信息。
可以按以下步骤完成:
如何运作?
由于使用
ActiveSupports::Notifications
实现
ActiveSupports::Notifications
因此在使用工厂时很容易添加回调:
ActiveSupport::Notifications.subscribe('factory_bot.run_factory') do |_name, _start, _finish, _id, payload| name = payload[:name] traits = payload[:traits] storage[name] ||= Set.new storage[name] |= traits end
在收集了所有信息之后,我们使用简单的算法找到了未使用的工厂。
圣经后
自己尝试并分享您的反馈,我将不胜感激!
谢谢您的关注。