RSpecのモックとスタブに関する練習問題
RSpecコースの一部として、モックとスタブに関する実践的な練習問題を30問用意しています。 基礎から応用まで段階的に学習できるよう構成されています。
学習を開始する準備ができました
下記の練習問題から始めて、段階的にスキルアップしていきましょう
スタブで例外を発生させるために使用するメソッドは何ですか?
約3分
以下のコードの実行結果はどうなりますか? ```ruby allow(Time).to receive(:now).and_return(Time.new(2024, 1, 1)) current_time = Time.now puts current_time.year ```
約3分
`instance_double`を使用することで、チーム開発において期待できる効果は何ですか?
約3分
コンストラクタインジェクションを使用する理由として最も適切なものはどれですか?
約3分
`instance_double`で連続して異なる値を返すように設定するには、どの方法を使用しますか?
約3分
RSpecで`instance_double`を作成する正しい構文はどれですか?
約3分
以下のコードで`instance_double`を使用する際の注意点は何ですか? ```ruby class DatabaseService def save_record(data, options = {}) # 保存処理 end end db_service = instance_double(DatabaseService) expect(db_service).to receive(:save_record).with('test_data') ```
約3分
以下のコードで`instance_double`の役割として正しいものはどれですか? ```ruby email_service = instance_double(EmailService) allow(email_service).to receive(:deliver_welcome_mail).and_return(true) ```
約3分
メソッドが呼び出されないことを検証するRSpecの書き方はどれですか?
約3分
RSpecの`instance_double`を使用する主な利点は何ですか?
約3分
スタブで指定した値を返すために使用するメソッドは何ですか?
約3分
以下のコードで、メソッドが1回だけ呼び出されることを検証するにはどうすればよいですか? ```ruby expect(email_service).to receive(:send_welcome_mail).with('test@example.com') ```
約3分
RSpecの`subject`を使用することで得られる効果は何ですか?
約3分
RSpecの`instance_double`でメソッドの返り値を設定する正しい方法はどれですか?
約3分
以下のコードで商品ID 456を指定した場合の返り値は何になりますか? ```ruby stock_service = instance_double(StockService) allow(stock_service).to receive(:fetch_stock_quantity).with(123).and_return(50) allow(stock_service).to receive(:fetch_stock_quantity).with(456).and_return(10) result = stock_service.fetch_stock_quantity(456) ```
約3分
モックを使ったテストが最も適している場面はどれですか?
約3分
以下のコードで`purchase`メソッドの返り値は何になりますか? ```ruby stock_service = instance_double(StockService) allow(stock_service).to receive(:fetch_stock_quantity).and_return(30) purchase_manager = PurchaseManager.new(stock_service) result = purchase_manager.purchase(123, 25) ```
約3分
以下のコードでdoubleメソッドを使ってモックオブジェクトを作成する正しい書き方はどれですか?
約3分
RSpecにおける「モック」と「スタブ」の違いについて正しい説明はどれですか?
約3分
以下のコードで使われているRSpecの技法は何ですか? ```ruby allow(user_service).to receive(:find_by_email).and_return(user) ```
約3分
スタブとモックの主な違いとして正しいものはどれですか?
約3分
スタブの主なメリットとして**間違っている**ものはどれですか?
約3分
RSpecの`let`を使用する主な利点は何ですか?
約3分
通常の`double`と`instance_double`の主な違いは何ですか?
約3分
以下の状況で`instance_double`が最も効果的なのはどのような場面ですか?
約3分
外部APIのテストでスタブを使う主な理由として**最も適切でない**ものはどれですか?
約3分
以下のスタブの設定で、`service.fetch_data`を呼び出したときの動作はどうなりますか? ```ruby allow(service).to receive(:fetch_data).and_return('data1', 'data2', 'data3') ```
約3分
RSpecでスタブを作成する際に使用するメソッドは何ですか?
約3分
以下のコードで`instance_double`を使用した場合、どのような結果になりますか? ```ruby class UserService def create_user(name) # ユーザー作成処理 end end # テストコード user_service = instance_double(UserService) expect(user_service).to receive(:register_user).with('田中') ```
約3分
`instance_double`の初期化時にメソッドの返り値を設定するには、どの構文を使用しますか?
約3分
💡 学習のコツ
1
問題を順番に解く
基礎から応用へと段階的に構成されているため、順番に取り組むことをお勧めします
2
解説をしっかり読む
正解・不正解に関わらず、解説を読んで理解を深めましょう
3
復習で定着させる
間違えた問題は後日再チャレンジして、知識の定着を確認しましょう
プレミアムプランでは、進捗管理、間違えた問題の自動復習リスト、詳細な解説動画など、 より充実した学習体験をご利用いただけます。