爲此我通常編寫自定義模塊,我可以在spec_helper.rb
文件中包含這些模塊。
假設我正在測試後端API,並且我不想每次都解析JSON響應正文。
spec/
spec/spec_helper.rb
spec/support/request_helper.rb
spec/controllers/api/v1/users_controller_spec.rb
我首先在放置在支持子文件夾下的模塊中定義一個函數。
# request_helper.rb
module Request
module JsonHelpers
def json_response
@json_response ||= JSON.parse(response.body, symbolize_names: true)
end
end
end
然後我包括該模塊設定在某些測試類型
#spec_helper.rb
#...
RSpec.configure do |config|
config.include Request::JsonHelpers, type: :controller
end
然後我用在測試中定義的方法。
# users_controller_spec.rb
require 'rails_helper'
RSpec.describe Api::V1::UsersController, type: :controller do
# ...
describe "POST #create" do
context "when is successfully created" do
before(:each) do
@user_attributes = FactoryGirl.attributes_for :user
post :create, params: { user: @user_attributes }
end
it "renders the json representation for the user record just created" do
user_response = json_response[:user]
expect(user_response[:email]).to eq(@user_attributes[:email])
end
it { should respond_with 201 }
end
end
在你的情況,你可以創建一個模塊,如
module EnvHelper
def is_debug_mode?
@debug_mode ||= ENV['DEBUG']
end
end
然後,可將它和簡單的使用方法is_debug_mode?
在你的測試。