【问题标题】:Helpers in rspecrspec 中的助手
【发布时间】:2014-08-06 13:52:15
【问题描述】:

我有一个 rspec 项目,用作独立应用程序来测试 API。我想找出最好的方法是将我的 API 调用定义为代码重用的助手。

我设置它的方式是我有一个规范文件夹,其中包含一个支持文件夹和一个测试文件夹。作为支持,我有一堆用 ruby​​ 模块/类设置的 ruby​​ 文件,这些文件定义了要在规范中使用的 API 调用。

示例:

module Helpers
  class Project

    def add(name: nil)
      api_call_code_goes_here
    end

  end
end

这对我有用,但我一直在阅读 rspec 中的共享上下文,想知道这是否是最佳实践,或者对我更有效。

示例:

RSpec.shared_context "project" do

  def add_project(name: nil)
    api_call_code_goes_here
  end

end

有没有类似 rspec 项目的人有和我类似的助手?如果是这样,我想知道您是如何设置助手的。

【问题讨论】:

    标签: ruby rspec automation qa helpers


    【解决方案1】:

    在 spec/support/helper 文件中是的,这是在 rspec 中添加自己的代码的最佳方式......

    我已将我的登录代码添加到支持帮助文件中,例如

    module Login
      module Admin
       # this method creates a admin login for request spec.
       def login_admin
        @admin = FactoryGirl.create(:admin, password: '123456789')
        @current_admin = @admin
        visit new_admin_session_path
        fill_in 'admin_email', with: @admin.email
        fill_in 'admin_password', with: '123456789'
        click_button 'Sign In'
      end
    end
    

    在 spec/spec_helper.rb 中需要这个文件

    Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
    

    config.include Login::Admin, type: :request
    

    所以我可以在任何请求规范中使用 super_admin_login 方法......

    【讨论】:

    • 你所做的一切都与我所做的非常相似,不过有一个问题。 config.include 中的“type: :request”是什么?
    • 该类型意味着助手只包含请求规范。如果你用什么控制器你可以写控制器。如果您跳过该类型属性,则意味着您可以在任何规范中使用该助手。
    猜你喜欢
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    相关资源
    最近更新 更多