rspec で WebMock を使う
Ruby Ruby on Rails
Published: 2019-06-08

やったこと

WebMock の stub を利用して rspec でテストを書いてみます。

確認環境

$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]

$ rails --version
Rails 5.2.3

$ gem list | grep rspec-rails
rspec-rails (3.8.2)

調査

インストール

Gemfile

group :development, :test do
  gem 'webmock'
end
$ bundle install

spec/models/task5_spec.rb

require 'rails_helper'
require 'webmock/rspec'

RSpec.describe Task, type: :model do

  before do
    WebMock.enable!
  end

  it 'test1' do
    WebMock.stub_request(:get, "http://localhost").to_return(
      body: JSON.generate({b: 3, c: 8}),
      status: 200
    )

    p Net::HTTP.get('localhost', '/')
  end
end

出力結果

$ bundle exec rspec spec/models/task5_spec.rb
"{\"b\":3,\"c\":8}"
.

Finished in 0.0048 seconds (files took 1.5 seconds to load)
1 example, 0 failures

参考