メソッド引数の内容をテストする

Overview

引数のテストは業務中によく発生していた不具合解消で使えそう。

Motivation/Context

以外に多いんだよね、引数の引数の不正値による不具合。

その時、テストコードを1行追加するだけで済むのは楽。

Get Started!!

expect(twitter_client_mock).to receive(:update).with('今日は晴れです')
# update メソッドが呼ばれることを検証する
# ただし、引数は '今日は晴れです' かつ、呼び出される回数は1回だけであること
expect(twitter_client_mock).to receive(:update).with('今日は晴れです').once

expect(user).to receive(:save_profile).with(‘Alice’, ‘alice@example.com’)

# 2つ以上の引数を受け取る場合
expect(user).to receive(:save_profile).with('Alice', 'alice@example.com')
# ハッシュを引数として渡す場合
expect(user).to receive(:save_profile).with(name: 'Alice', email: 'alice@example.com')
# ハッシュ全体ではなく、特定のkeyとvalueだけに着目する場合
expect(user).to receive(:save_profile).with(hash_including(name: 'Alice'))

References

https://qiita.com/jnchito/items/640f17e124ab263a54dd