LoginSignup
3
2

More than 5 years have passed since last update.

初めてのRSpecで調べたこと

Last updated at Posted at 2018-09-04

RailsのRSpecを初めて試した時に調べたことをメモしておきます。
少しでも役に立てればと。

実行方法

ディレクトリ指定

rspec spec/models/

ファイル指定

rspec spec/models/user_spec.rb

行指定

rspec spec/models/user_spec.rb:12

全実行

※DBのデータが削除されるので、注意。

rake spec

RSpec書き方

rspecの悪い書き方、良い書き方

マッチャ

eq

期待値と実際の値が「等しい」かどうかを検証する場合は eq を使う。

expect(1 + 3).to eq 3
expect(1 + 2).not_to eq 1
# または
expect(1 + 2).to_not eq 1

be

等号・不等号と組み合わせて、値の大小を検証するときによく使われる。

expect(1 + 2).to be >= 3

テストコードのDRY

テストコードの期待値はDRYを捨ててベタ書きする ~テストコードの重要な役割とは?~

出力フォーマット

  • --color
    • 色付け
  • --profile
    • テストごとの処理時間を出力
  • --format d
    • example (it)に記述したコメントをテスト結果に表示
rspec --color --profile --format d spec/XXXXX_rspec.rb

.rspecに事前に書いておけば、コマンドを省略できる。

.rspec
--color --profile --format d

pedningにする

テストする必要があるが、とりあえずテストにエラーを出したくない時に活用

spec.rb
  xit "assigns users as @users" do
  end
result
  Accounting::MemberController GET index assigns users as @users
    # Temporarily disabled with xit

参考
Rspec の pending と skip って何が違うの?

つまずいたこと

PG::Error: ERROR: permission denied

テスト実行時に以下エラー発生。

     Failure/Error: Unable to find matching line from backtrace
     ActiveRecord::StatementInvalid:
       PG::Error: ERROR:  permission denied: "RI_ConstraintTrigger_c_1196635" is a system trigger

DBにアクセスユーザの権限レベルを上げれば良い

ALTER USER user_name with SUPERUSER;

参考
Postgres system triggers error: permission denied

letの遅延評価

Rspec letの遅延評価

参考サイト

RSpecチートシート

3
2
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
3
2