【发布时间】:2016-02-13 15:47:55
【问题描述】:
作为现在的许多 Rails 程序员,我正在从 RSpec 转向 Minitest。我喜欢在 FactoryGirl 工厂中使用 Faker 生成的测试中获得漂亮而有意义的数据。然而,我很惊讶在 Minitest 夹具中看到不同的方法。在我发现的所有示例中,根本没有使用 Faker。所以我的问题是我应该对 Minitest 中的固定装置使用什么方法。我应该使用Faker来填充夹具吗?
【问题讨论】:
作为现在的许多 Rails 程序员,我正在从 RSpec 转向 Minitest。我喜欢在 FactoryGirl 工厂中使用 Faker 生成的测试中获得漂亮而有意义的数据。然而,我很惊讶在 Minitest 夹具中看到不同的方法。在我发现的所有示例中,根本没有使用 Faker。所以我的问题是我应该对 Minitest 中的固定装置使用什么方法。我应该使用Faker来填充夹具吗?
【问题讨论】:
在你的赛程中使用 Faker 并没有错,但我认为你的问题的答案归结为两者之间的根本区别。两者都用于为运行测试提供数据,但工厂是具有生成模型潜力的生成器。这意味着它们用于在测试中根据需要创建新对象,特别是,它们被用作创建具有有效和可预测数据的新对象的快捷方式,而无需指定每个属性。
FactoryGirl.define do
factory :user do
first_name "John"
last_name "Doe"
admin false
end
end
user = build(:user, first_name: "Joe")
另一方面,fixture 为您提供应用程序数据库中的真实数据。这些是在测试执行之外创建的并且没有验证,因此随着应用程序的增长,趋势是必须将所有夹具作为单个测试数据集进行管理。这是反对夹具的主要论据,但工厂和夹具都有其优点和缺点。
不过,要直接回答您的问题,您没有找到更多使用 Faker 的夹具示例的原因可能是因为固定数据需要比工厂定义更严格地控制,其中一些也可能是倾向于使用 Minitest 的开发人员也可能倾向于从他们的 Gemfile 中删除不必要的依赖项。但是如果你想继续使用 Faker 来获取姓名和地址等,没有理由不这样做。
【讨论】: