3

我在 app/helpers/foo.rb 中向我的 rails 项目 Foo 添加了一个助手类。它看起来像这样。

class Foo
   #....stuff
end

我在某些模型中使用它,一切正常。但是,在 spec/helpers/foo_helper_spec.rb 中,我有

require 'spec_helper'
describe Foo do
end

这会导致 rspec 崩溃(不报告任何失败的测试,但实际上崩溃),说

/actionpack-3.2.12/lib/abstract_controller/helpers.rb:153:in `include': 错误的参数类型 Class (expected Module) (TypeError)

如果我删除了描述行,只是让文件为空,一切正常,但我想尽快添加一些测试。

有谁知道我该如何解决这个问题?

谢谢。

4

1 回答 1

4

rails 遵循约定优于配置的范式。其中一个约定是,您将模块放入 helpers 文件夹中,因为它们包含在您的控制器和视图中。

这就是为什么 rspec 在尝试包含您的模块时失败的原因,这实际上是一个类。

如果你需要在那里有一个真正的类,我认为你应该把它放在一个不同的目录中以使其明显,这不是一个通常的 Rails 助手!

例如,如果您正在为您的视图实现某种装饰器,请将其放在装饰器文件夹中。如果您正在为您的模型实现某种适配器,请将其放在模型文件夹或某个模型子文件夹中。

于 2013-06-18T01:42:39.877 回答