3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rspecにおける「be_~」について  

Last updated at Posted at 2023-03-14

はじめに

Everyday Rails - RSpecによるRailsテスト入門でRspecを学習している中、be_〇〇というマッチャがいくつか出てきたので理解を深めたいと思いました。

環境

ruby 3.2.1
Rails 7.0.4
rspec-rails 6.0.1

マッチャ

be_〇〇はマッチャの一つです。be_successhulbe_truthybe_emptyなどがあります。
そして、そもそもマッチャとは、以下のことを言います。

「期待値と実際の値を比較して、一致した(もしくは一致しなかった)という結果を返すオブジェクト」のことです。

参考: 使えるRSpec入門・その2「使用頻度の高いマッチャを使いこなす」

その中でもbe_〇〇というマッチャを使用すると、真偽判定をするメソッドのように期待値を検証することができます。

rspec
#homeページへの遷移が成功したことを検証する場合
it "responds successfully" do
  get :home
  expect(response).to be_successful #response.successhul?のように振る舞う
end

モデル内に真偽判定をするメソッドがある場合

  • モデル内に真偽値を返すメソッドを定義しているとき、そのモデルに対応するモデルspec内でbe_<メソッド名>とすることで真偽を判定することができます。

例えば以下のメソッドをUserモデル内で定義していた場合

user.rb
class User < ApplicationRecord

  # 成人かどうかを判定するメソッド
  def adlut?
    self.age >= 18
  end

end

Userモデルのスペック内でマッチャとして利用できる。

spec/models/user_spec.rb
it "is an adlut user" do
  user = User.new(name: "sample", age: 24)
  expect(user).to be_adlut
end  

参考サイト

3
0
5

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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?