4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rspecで関数のモックをしているのに実行されてしまう

Posted at

はじめに

Rspecで2回同じところにハマったのでまとめます

問題

以下のようなテストを書きました

require 'spec_helper'

RSpec.describe sample do
  describe 'サンプルのテスト' do

    context '正しい引数が与えられた場合' do
      it '成功する' do
        params = {"hoge"=>"fuga"}
        test.put_api(params)
        expect(TestApi).to receive(:put_test).with(params.to_json).and_return(true)
      end
    end
  end
end

しかし実際にAPIを叩く関数をモックしているのになぜか実際にAPIを叩いてエラーになりました

解決方法

このような場合はモックとアサーションを兼任しているので、実際の呼び出し前にexpectを書く必要があります

require 'spec_helper'

RSpec.describe sample do
  describe 'サンプルのテスト' do

    context '正しい引数が与えられた場合' do
      it '成功する' do
        params = {"hoge"=>"fuga"}
        expect(TestApi).to receive(:put_test).with(params.to_json).and_return(true)
        test.put_api(params)
      end
    end
  end
end

おわりに

これは毎回ひっかかるだけにもしかしたらネットにおおくあるかもですね

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?