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テスト
- capybaraを使う
expect{} の部分に少し着目してください。この中ではブラウザ上でテストしたいス テップを明示的に記述し、それから、結果の表示が期待どおりになっていることを検証しています。ここ で使われているのは Capybara の DSL です。
- 第1回 DSLとは?:今そこにある“DSL”|gihyo.jp … 技術評論社
- DSL: ドメイン固有言語。メタプログラミングで使われる。
- DSLを作ると「プログラムを生成するプログラムを書く」ことができる。
- Activerecordもrspe, capistranoもDSL。
- 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で開けるようになった。 - また一つ便利になってうれしい!!