我在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”:错误的参数类型类(预期的模块)(TypeError)
如果我删除了描述行并且只是将文件清空,一切正常,但我想尽快添加一些测试。
任何人都知道如何解决这个问题?
感谢。
答案 0 :(得分:4)
rails遵循约定优于配置的范例。其中一个约定是,您将模块放入helpers文件夹,因为它们包含在您的控制器和视图中。
这就是为什么rspec在尝试包含你的模块时失败的原因,而模块实际上是一个类。
如果你需要在那里有一个真正的类,我认为你应该将它放在一个不同的目录中,以使其显而易见,这不是一个常见的rails帮助器!
例如,如果要为视图实现某种装饰器,请将其放在装饰器文件夹中。如果要为模型实现某种适配器,请将其放在models文件夹或某个模型子文件夹中。