Testing 夹具(SLUG)的友好\u id

Testing 夹具(SLUG)的友好\u id,testing,fixtures,friendly-id,Testing,Fixtures,Friendly Id,我正在应用程序中使用freindly_id。我在应用程序中设置了一些装置。我想对它们进行集成测试。在测试期间,我需要友好的_id,但是从fixture创建的DB记录在Slug表中没有相应的Slug 不是从夹具数据自动创建段塞吗?如果不是,那么什么是解决方案?一个解决方案是在测试环境中运行生成slug的rake任务 在窗户上 >set RAILS_ENV=test >rake friendly_id:redo_slugs MODEL=xxx 或Unix/Linux >expor

我正在应用程序中使用freindly_id。我在应用程序中设置了一些装置。我想对它们进行集成测试。在测试期间,我需要友好的_id,但是从fixture创建的DB记录在Slug表中没有相应的Slug


不是从夹具数据自动创建段塞吗?如果不是,那么什么是解决方案?

一个解决方案是在测试环境中运行生成slug的rake任务

在窗户上

>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任务已被删除,请参阅对此答案的评论或友好的自述。

最简单的方法是将
段塞添加到夹具数据中:

# test/fixtures/things.yml
apple:
  title: Apple
  restricted: hellyes
  slug: apple
#app/model/thing.rb

注意,Rake任务在FriendlyID4中消失了。作者鼓励您编写自己的脚本/任务来更新旧记录上的slug。最简单的方法是运行
MyModel。从控制台中查找每个(&:save)
。如果需要的话,把它放到Rake任务中是非常简单的。我对这个解决方案有一个问题。如果你有一个验证来确保你的slug不是空的,那么除非你把它取出来,否则这是不理想的。