RSpec の ControllerSpec でパラメータとともに post 送信するテスト

スポンサーリンク

昨日の Rspec で Controller テストの準備編 | EasyRamble のエントリーに続いて、実際に ControllerSpec でテストをごりごり書いていきます。

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

ControllreSpec で、コントローラーのアクションにパラメータを渡して post で送信するテストを例示します。通常の POST 送信と Ajax による POST 送信の二種類の方法を書きました。Message モデルに対して Post 送信し、Message モデルのインスタンスを DB に保存する場合のテストの例です。

通常の POST と Ajax の POST で使うメソッド

通常の post。

Ajax での post。

以上の post 送信用のメソッドを使います。

form_for(@message) のように form_for ヘルパーでフォームを生成した場合、input フィールドの name 属性は “message[title]” となっているはずですので、パラメータは message: hash のように渡します。

SomeController で Message モデルに post 送信する場合のテスト例

FactoryGirl.build は、FactoryGirl.create と違い、インスタンスを生成するだけでDBに保存しません。この例では、post メソッドともに送信する message_params を組み立てるために使っています。

その後、実際に post 送信を行い、change(Message, :count).by(1) で DB のレコードの増加を確認。ユーザーがログインしている場合は、1つ増えるのを確認しています。delete メソッドの場合は、by(-1) でレコードが1つ減るのを確認できます。

テスト書くの楽しいですね!(実装進めろ俺)

スポンサーリンク
私は Rails のテストフレームワークには RSpec を使っています。サーバーのテスト用に Serverspec もおすすめです。
 
スポンサーリンク

Leave Your Message!