【发布时间】:2019-02-22 16:16:47
【问题描述】:
我有一个名为 EventSeries 的模型,它的单数与复数相同。我已经以我能想象到的各种方式将它添加到变形器中:
inflect.uncountable %w( fish sheep EventSeries event_series Series series )
我在spec/fixtures 中有一个event_series.yml 固定装置文件。我什至尝试添加:
_fixture:
model_class: EventSeries
在 yml 文件的顶部,但它没有帮助。
我也尝试将文件名更改为event_serieses.yml 并调用event_serieses(:d30_short_series),我得到NoMethodError undefined method event_serieses。
我使用 RSpec 进行测试。在系统规范中,我有以下声明:
let(:subject_series) { event_series(:d30_short_series) }
当我运行规范时,我得到了这个错误:
NoMethodError: undefined method `event_series' for <RSpec::MySpecFile>
我有许多其他模型,并且此模式适用于所有其他模型(使用复数版本,例如 users 或 events),所以我认为这是一个复数问题。我搜索了答案并找到了this issue,这表明可以通过将模型名称添加到变形器来解决问题,但这对我的情况没有帮助。
我已经设法解决了不可数名称的所有其他固有问题;例如,我的路径助手都正常工作,Rails 可以按预期找到我的视图文件。但是我一直没能解决这个夹具问题。
有没有办法将 RSpec 指向访问我的灯具的正确方法?
使用 Rails 5.2、Ruby 2.6.0 和 RSpec 3.8。
【问题讨论】:
-
不是答案,抱歉,但仅供参考 - Rails 5.2、Ruby 2.6.0 和 minitest 5.11 - 工作正常,无需任何变形。
-
@smathy 可以肯定的是,我暂时移除了变形器,但这并没有帮助。所以这个问题可能是 RSpec 特有的。
-
inflect.uncountable(%w(equipment information rice money species series fish sheep jeans police))Rails 默认包含series。我不确定 RSpec 的问题,但默认情况下 EventSeries 已正确变形,您无需添加任何内容。 -
event_series应该是模型EventSeries作为一个全球性的吗?你期待event_series(:d30_short_series)做什么?对我来说,不清楚事物是如何联系起来的,您的假设和解决方案似乎是对应该与单数或复数同名的模型应用变形,但是如果没有您实施的修复,代码会做什么? -
@DaniloCabello 这个应用程序使用了Rails fixtures,在这个上下文中
event_series是对Rails 夹具文件的引用。对于所有其他模型,此语法从 fixtures.yml 中返回一个项目。例如,users(:admin_user)从用户夹具文件中返回一条记录。在这种情况下,event_series(:d30_short_series)应该从event_series.yml文件中返回单个 event_series。
标签: ruby-on-rails rspec fixtures ruby-on-rails-5.2