LoginSignup
0
0

More than 3 years have passed since last update.

【RSpec】paramの書き方

Last updated at Posted at 2020-03-22

はじめに

paramとして渡された引数を使うメソッドのテストをするときに、データの作成方法で悩んだので備忘として残します。
save_hogeメソッドの中でprivateメソッド、save_user_hoge!が呼び出されます。
hogeは、メソッド内でparamとして使用されるため、形を整える必要がありました。

メソッドのコード(省略してます)

app/models/user.rb
def save_hoge
  save_user_hoge!(hoge)
end

private
def save_user_hoge!(hoge)
    if hoge[:first_hoge_id].present?
      user_hoge.create(
        hoge_id: hoge[:first_hoge_id].to_i
      )
    end
    if hoge[:second_hoge_id].present?
      user_hoge.create(
        hoge_id: hoge[:second_hoge_id].to_i
      )
    end
end

OK

spec/models/user_spec.rb
let!(:hoge) do
  {
    hoge: {
      first_hoge_id: 1,
      second_hoge_id: 2
    }
  }
end
spec/models/user_spec.rb
let!(:hoge) {
  {
    hoge: {
      first_hoge_id: 1,
      second_hoge_id: 2
    }
  }
}

NG

let!(:hoge) { hoge: { first_hoge_id: 1, second_hoge_id: 2 } }

まとめ

do endで囲む場合も、{}で囲む場合も同じだと指摘をいただきました。
NG例がだめな原因は、ハッシュをくくる{}が足りなかったからみたいです。

0
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
0
0