【问题标题】:Where should I store methods to make them available both to my application and to RSpec?我应该在哪里存储方法以使它们对我的应用程序和 RSpec 都可用?
【发布时间】:2012-01-16 03:46:25
【问题描述】:

我需要创建一些对我的应用程序(模型、视图和控制器)和 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 时,我不想复制这些路径助手的逻辑。

【问题讨论】:

    标签: ruby-on-rails rspec


    【解决方案1】:

    您可以通过(在 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
    

    【讨论】:

      【解决方案2】:

      Rspec-rails gem 似乎支持helper testing

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

      【讨论】:

      • 你好,m_x。我不是在寻找帮助测试。我希望让助手可用
      • gem 可以使 helpers available in any of your specs :“为您的助手编写规范是一个简单的过程。只需告诉示例组助手的名称,示例组将公开一个对象,该对象包括帮手”。在我花了这么多时间试图帮助你之后,我对 -1 有点难过。
      • 您完全正确-我这样做是因为尽管您随后的评论解释了您的推理,但第一个评论与测试助手有关。无论哪种方式我都道歉,你的帮助是无价的,我拒绝投票是不礼貌的。如果您可以对其进行编辑以包含您的后续评论,我可以更改否决票。谢谢。
      【解决方案3】:

      没有尝试过,但这看起来是一个有趣的解决问题的方法: Adding rspec test for library module doesn't seem to pickup Expectations and Matchers

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

      【讨论】:

        猜你喜欢
        • 2011-02-15
        • 1970-01-01
        • 2011-06-27
        • 2017-05-30
        • 2012-03-09
        • 2020-07-02
        • 2019-08-04
        • 2010-11-10
        • 2016-10-06
        相关资源
        最近更新 更多