2
0

【RSpec】備忘録:stub_constメソッド、create_listメソッド

Posted at

stub_constで定数をスタブ化する

RSpecのテストフレームワークを使用しているRubyやRuby on Railsのプロジェクトで見られるメソッドの一つ。一時的に定数の値をスタブ(つまり、偽の値に置き換える)するのに役立つ。

使用例

特定の定数の値に依存するコードをテストしている場合、その定数の値を一時的に変更してテストシナリオを検証することができる。

it "does something based on MY_CONSTANT" do
  stub_const("MyClass::MY_CONSTANT", "fake_value")
  
  # このブロック内では、MyClass::MY_CONSTANTは"fake_value"として扱われる
  expect(MyClass.some_method).to eq(expected_result_based_on_fake_value)
end

この例では、MyClass::MY_CONSTANTfake_valueに一時的に置き換え、その新しい値に基づいて動作するかどうかをテストする。

stub_constはテストの実行中だけ定数の値を変更し。テストが完了すると、定数の元の値が復元される。

create_listを使用して、複数のインスタンスをまとめて作成する

FactoryBotのメソッドの一つで、指定されたファクトリ名を使って複数のレコードを一度に作成するために使用される。

使用例

以下のようなFactoryBotの定義あるときに、

FactoryBot.define do
  factory :user do
    name { "John Doe" }
    age { 30 }
  end
end

5人のユーザーを一度に作成する場合は以下のようになる。

users = create_list(:user, 5)

べてのユーザーに共通の属性をオーバーライドしたい場合は、以下のようになる。

users = create_list(:user, 5, age: 25)
2
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
2
0