gpt4 book ai didi

ruby-on-rails - 辅助类的 rspec 需要模块,即使没有模块

转载 作者:行者123 更新时间:2023-12-04 02:53:22 26 4
gpt4 key购买 nike

我在 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)

如果我删除 describe 行并且只让文件为空,一切正常,但我想尽快添加一些测试。

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

谢谢。

最佳答案

rails 遵循约定优于配置的范例。其中一项约定是,您将模块放入 helpers 文件夹中,因为它们包含在您的 Controller 和 View 中。

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

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

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

关于ruby-on-rails - 辅助类的 rspec 需要模块,即使没有模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17158853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com