LoginSignup
4
1

More than 5 years have passed since last update.

Cucumberで例外のテストをする

Last updated at Posted at 2016-03-02

DB接続が切れた時にエラーページを表示するなど、システムエラー発生時のテストをCucumberで書く際の覚書です。

TL; DR

  • シナリオに@allow-rescueタグをつける
  • feature/support/env.rbrequire 'cucumber/rspec/double'する
  • StepでHoge.stub(:huga).to_raise('piyo piyo')を設定する
    • Cucumberは結合試験・受け入れ確認試験レベルのテストなので、Stub/Mockを使うべきケースは少ない。多用してはダメ。

kwsk

Stub/Mockを使って、例外発生の仕込みを作る

Rspecのように、stub/mockを利用して例外を発生するようにします。

features/support/env.rb
require 'cucumber/rspec/double'
features/step_definitions/your_app_steps.rb
Given '検索した時にDB接続エラーとなる' do
  ActiveRecord::Base.stub(:postgresql_connection).to_raise(PG::ConnectionBad)
end

参考 : Mocking and Stubbing with Cucumber - cucumber | GitHub

そもそもこういうテストはRspecなりMiniTestのコントローラーテストやリクエストテストですべきなのでは? という考えもあり。

システムエラーしてもテストが止まらないようにする

通常、Cucumberテスト中に例外が発生した際は、問答無用でテストが失敗します。
例外発生を無視し、各ステップが通ればテスト成功とみなすように設定するのが@allow-rescueです。
シナリオごとにつけてもよい。

# language: ja
@allow-rescue
フィーチャ: DB接続ができていない時は、エラーページを表示する
  ユーザーにアナウンスを行う

  背景:
    前提 ユーザー検索した時にDB接続エラーとなる

  シナリオ: なんか適当なシナリオ

参考 : Tags - cucumber | GitHub

4
1
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
1