Ruby
Rails
RSpec

【RSpec 3.1+】ひとつの expect で複数リソースの change を検証する

ひとつのアクションで、複数のリソースが作成されるときの検証方法の例。

例えば POST するエンドポイントを叩いたあとにリソースがひとつ増えることを検証するときは次のように書く。

    it do
      expect { 
        post "/api/v1/schedules/create", params: params
      }.to change { Schedule.count }.by(1)
    end 

このとき、Schedule というリソースだけでなく Project といったリソースも一緒に登録されることを検証したい場合は次のように書ける。

    it do
      expect { 
        post "/api/v1/schedules/create", params: params
      }.to change { Schedule.count }.by(1).and change { Project.count }.by(1)
    end 

RSpec 3.1 のリリースで、change メソッドをチェーンできるようになっている!

参考

RSpec 3.1 has been released!
expect change を複数データ同時にTESTしたいときに