2019/04/29

rspec: コントローラのテスト

expect {
  delete :destroy, params: { id: @project.id }
}.to change(@user.projects, :count).by(-1)
  • change(対象、メソッド)
it 'deletes a project' do
  sign_in @user
  expect {
     delete :destroy, params: { id: @project.id }
  }.to change{ Project.count }.by(-1)
 end
  • こんなふうにブロックで書いてもいい。

私が開発しているアプリケーションでは、コントローラのテストはアクセス制御が正しく機能して いるか確認するテストに限定するようにしています。

コントローラのテストまとめ

  • コントローラのテストは対象となる機能の単体テストとして最も有 効活用できるときだけ使うのがよい
  • ただし、使いすぎないように注意する

featureテスト

  • cancancanのability、下みたいにmanageでadminに全権限を設定したら、設定してない :member, Hogeとかもadmin以外は使えなくなるという認識。
    can :manage, :all if user.admin



#### tips

- [ターミナルからアプリを起動する | ハックノート](https://hacknote.jp/archives/21714/)
- `alias chrome="open -a /Applications/Google\ Chrome.app"`
- これで`chrome ~~~.html`でhtmlファイルをchromeで開けるようになった。
- また一つ便利になってうれしい!!