メソッドは次のようにアプリケーションを起動します。リクエストオブジェクトとレスポンスオブジェクトを新しく作成します。指定したコールバックを呼び出します。テストの起動処理は、可能な限りそのアプリケーションの起動処理と同じになるようにしています。いくつかの制約もあります。それが使われることはありません。指定した方法で人工的なレスポンスを返したりするメソッドが用意されています。テストサーバに特定の設定を期待してはいけません。言い換えると、テストの実行環境が特定のサーバ設定になっていることは保証されていないということです。ルータがリクエストをルーティングしてくれるということだけです。サーバ固有のヘッダをリクエストオブジェクトに含めてはいけません。テストを作り始めることができます。アプリケーションのテスト起動用の設定を済ませたら、テストの開始です。した違いがいくつかあります。ディスパッチしなければなりません。必要になることもあります。これらの情報をリクエストに含めることもできます。...}}リクエストが準備できたので、次はアサーションを作成してみましょう。ステートメントを発行し、このメソッドを使用するコントローラーに対するテストを全て停止させます。リダイレクタではこのメソッドを使わないようにしましょう。リダイレクトしたあと処理を終了します。here}}Importantアプリケーションによっては、これだけでは不十分かもしれません。いったロジックを実行するかもしれないからです。これらをうまく処理することはできません。更新内容をスキップしています。アサーションは、ユニットテストの肝となるものです。この機能を使うことで、期待する結果と実際の結果が一致することを確かめるのです。アプリケーションやコントローラのテストをよりシンプルにできるようにしています。レスポンスの中身に何らかの結果が入っていることを簡単に検証できます。統合も簡単に行えます。要素を取得するための仕組みを持っています。それと同じ構文で使用できるのです。アサーションに統合されています。アサーションの型に応じてオプション引数やエラーメッセージも指定します。アサーションには次のようなものがあります。要素が存在することを表明します。存在しなかった場合のメッセージの先頭にそれが追加されます。指定した内容が含まれることを表明します。存在しなかった場合のメッセージの先頭にそれが追加されます。マッチする内容が含まれることを表明します。存在しなかった場合のメッセージの先頭にそれが追加されます。個存在することを表明します。存在しなかった場合のメッセージの先頭にそれが追加されます。個以上存在することを表明します。存在しなかった場合のメッセージの先頭にそれが追加されます。使うのと同じ意味となります。個以下しか存在しないことを表明します。存在しなかった場合のメッセージの先頭にそれが追加されます。使うのと同じ意味となります。系のメソッドが存在します。それは自明なことだからです)。ほうが使いやすいという開発者もいることでしょう。版のメソッドを用意しています。'')リダイレクトアサーションアクションがリダイレクトを行うこともよくあります。さまざまなアサーションでそれをテストできます。リダイレクトが発生することを表明します。リダイレクトが発生しないことを表明します。指定したものであることを表明します。いずれかであることを表明します。指定した正規表現にマッチするものであることを表明します。指定した正規表現にマッチしない」のいずれかであることを表明します。レスポンスコードやヘッダのチェックが必要になることもあります。次のようなアサーションが使用できます。レスポンスコードが返されることを表明します。レスポンスに指定したヘッダが含まれることを表明します。指定した文字列がその中に含まれることを表明します。その値が指定した正規表現にマッチすることを表明します。系のメソッドが存在します。モジュールについてのアサーションを行えると便利です。どのルートにマッチしたのかを確認したいこともあるでしょう。以下のアサーションが、その手助けとなります。最後にディスパッチされたアクションで用いられたことを表明します。最後にディスパッチされたアクションで選択されたことを表明します。指定したアクションが、直近にディスパッチされたことを表明します。指定した名前のルートが、ルータでマッチしたことを表明します。系のメソッドが存在します。実際のテストシナリオをもとにテストの方法を確認していきましょう。ユーザ認証とユーザ登録について考えてみましょう。これらを処理することにします。要件は次のとおりです。常にコントローラのログインページにリダイレクトされる。ログインフォームと新規登録フォームの両方が表示される。ログインフォームに戻る。ユーザのプロファイルページにリダイレクトされる。プロファイルページには、そのユーザのユーザ名が表示される。そのユーザのプロファイルページにリダイレクトされる。ログアウトしたら、ログインページにリダイレクトされる。無効なデータが渡された場合は、登録に失敗する。今のところはひとまずこれだけにしておきます。コールバックを提供しやすくなります。それではまず、このクラスの基本部分を見ていきましょう。この後にメソッド定義が続きます...}これで、起動用コールバックを次のように作れるようになります。...}ここまでできたら、テストを書くことができます。簡単な方法は、アプリケーションのロジックを利用する方法です。別のリクエストをディスパッチさせます。...}ではテストを書いてみましょう。.errors');}}これらは簡潔なものであり、大半は実際の中身までは見ていないことに注意しましょう。新たなコンテンツが追加されるたびにテストを実行しなおすことが避けられます。ドキュメントの構造を使用してテストを行なっていることに注目しましょう。いうクラスが指定されているノードをフォームから探しました。どんなエラーが発生したのかという中身までは気にしなくてすむのです。このアプリケーションでは、データベースを使うことがあるかもしれません。テスト用の設定を行うという作業が各テストの最初に発生します。そのための機能が既に用意されています。ドキュメントを参照ください。テスト時と実運用時には別のデータベースを使用することを推奨します。使うことを推奨します。