【问题标题】:Test does not load many to many fixture测试不加载多对多夹具
【发布时间】:2010-02-10 11:54:38
【问题描述】:

我正在使用 Test 来测试我的应用程序。我有一些固定装置:users.yml、roles.yml、roles_users.yml。加载了用户和角色,但没有加载多对多表角色用户,因此用户与任何角色都不相关。在开发中使用 Rails 控制台一切正常,在测试中任何用户都没有连接到任何角色。我可以看到测试数据库中的用户和角色,但角色用户是空的

我是否必须在某处指定如何加载此夹具?

【问题讨论】:

标签: ruby-on-rails fixtures


【解决方案1】:

如果您使用 Rails >=2.2 以及用户和角色之间的标准 HABTM 关联,​​则不需要 roles_users.yml 文件。而是为users.yml 中的每个用户添加roles 行:

sally:
  roles: admin, editor
  ...

fred:
  roles: basic
  ...

这些值是您的角色装置的名称。我不完全确定这会解决你的问题,但至少它更干净。

【讨论】:

  • 是的,Rails 2.4 没有加载 HABTM。但是,我能够在我的 environment.rb 中强制使用该行为; ENV['FIXTURES'] ||= 'roles_users'
  • 当使用您的解决方案时,roles_users 表而不是:user_id = 1, role_id = 1 有:user_id = 1232342, role_id = 1 为什么 user_id 有那个奇怪的 id?测试失败,因为 role_id 1 in not connected to user_id 1
  • 在 Rails 中使用固定装置时,公认的做法是不为每个对象分配显式 ID,而是让 Rails 为您完成。它将基于夹具名称的 ID,因此您可以在测试中按名称加载夹具(例如:users(:fred)roles(:admin))。您最终会得到一些用于 ID 的长数字,但您永远不必知道它们——您可以在测试中使用夹具名称而不是 ID,这使它们更易于阅读。
  • 谢谢亚历克斯,另一个人这么说,我是主要问题。他们告诉我使用 factory_girl
猜你喜欢
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
  • 2018-02-07
  • 2011-01-12
  • 2012-07-21
  • 1970-01-01
  • 2013-10-24
  • 1970-01-01
相关资源
最近更新 更多