我应该在哪里存储方法,以使它们可用于我的应用程序和RSpec?

我需要创建一些可用于我的应用程序(模型,视图和控制器)和RSpec的方法。

具体来说,我需要创建一些包含关键逻辑的path_helper方法。 我需要将它们提供给RSpec,以便我可以运行如下测试:

controller.should redirect_to my_custom_path_helper(@object) 

我认为他们应该去/lib中的某个地方然而我不知道如何构建它(mixin模块 – 如果是这样我应该将模块混合到哪里?)。

如果我可以从RSpec访问应用程序助手,那么另一种选择就是。

编辑:请注意

这不是关于测试辅助方法的问题 ,而是关于使应用程序和RSpec都可以访问它们。

我需要这样做,因为我需要围绕我的rails path_helpers的包装器逻辑,当我在RSpec中测试should redirect_to .._path .._ path时我不想复制那些路径助手的逻辑。

您可以通过(在spec / spec_helper.rb中)使RSpec包含一个模块:

 RSpec.configure do |config| config.include YourModule end 

如果要使用路由路径帮助程序,可以像下面这样包含它们:

 RSpec.configure do |config| config.include Rails.application.routes.url_helpers end 

Rspec-rails gem似乎支持帮助测试

gem可以在任何规范中提供帮助程序:“为助手编写规范非常简单。只需告诉Example Group帮助程序的名称,示例组将公开包含帮助程序的对象”。

没有尝试过,但这看起来像一个有趣的方法来解决这个问题: 为库模块添加rspec测试似乎没有取得期望和匹配器

我们在测试模块时经常使用的模型是将模块包含在为测试创建的类中(在spec文件内)或包含在spec本身内。