【发布时间】:2011-01-30 23:52:54
【问题描述】:
我在我的应用程序中使用了 freindly_id。我在我的应用程序中设置了一些固定装置。我想对它们进行集成测试。在测试期间,我需要friendly_id,但从夹具创建的数据库记录在 Slug 表中没有相应的 slug。
不是从夹具数据自动创建的 slug 吗?如果没有,那有什么解决办法?
【问题讨论】:
标签: testing fixtures friendly-id
我在我的应用程序中使用了 freindly_id。我在我的应用程序中设置了一些固定装置。我想对它们进行集成测试。在测试期间,我需要friendly_id,但从夹具创建的数据库记录在 Slug 表中没有相应的 slug。
不是从夹具数据自动创建的 slug 吗?如果没有,那有什么解决办法?
【问题讨论】:
标签: testing fixtures friendly-id
最简单的方法是将slugs 添加到夹具数据中:
# test/fixtures/things.yml
apple:
title: Apple
restricted: hellyes
slug: apple
# app/model/thing.rb
class Thing << ApplicationRecord
extend FriendlyId
friendly_id :name, use: :slugged
end
【讨论】:
一种解决方案是在测试环境中运行生成 slug 的 rake 任务。
在 Windows 上
>set RAILS_ENV=test
>rake friendly_id:redo_slugs MODEL=xxx
或 Unix/Linux
>export RAILS_ENV=test
>rake friendly_id:redo_slugs MODEL=xxx
更新 rake 任务已被删除,请参阅对此答案的评论或friendly_id README。
【讨论】:
MyModel.find_each(&:save)。如果需要,将其放入 Rake 任务中会非常简单。