traceoutput""

テストは、動的な契約Ajaxを使った

契約テスト駆動開発を使用して符号化 テクニック

契約アジャイルとテストを使用して開発のテクニック駆動コーディングテストの番号を書いたメモを必要とする契約を、これらの開発技術を使用してコードをしたい冷やかすのURL層。問題を実装する。実証するソリューションのユースケースを定義し、ユースケースとして実装してみよう契約、s)は契約を履行するためのテストケース(模擬URLに契約を履行する、そして最後に、テストの実行を記述します。この例ではXMLHttpRequestをベースとして、おそらくあなたのテストのためにXMLHttpRequestを使用することがあります。ただし、契約のモックのURLを明示的には、クライアントまたはサーバーのコードにように、任意のクライアントを確認することができます統合されていません。この記事についてのWebサービスを構築して、あなたXMLHttpRequestのクライアントが、マッシュアップをクライアント、またはいくつかのサーバーサイドのWebサービスを集約することによってWebサービスを呼び出すことができます。この例では、単一の操作を追加するために使用が含まれて電卓アプリケーションの機能2番号を一緒に。どのような計算機操作のユニークな点は、過去の追加の履歴を保持する一時的なURLが使用されます。

を使用する場合、2つの番号に加えですが、2つのユースケースを実行するのが発生する必要があります:リダイレクションと加えて。リダイレクトの管理の詳細は、ここではカバーされていない次のセクションのテスト"動的契約の権利でカバーされる"どのように一時的なURLを決定される妖精の塵のカテゴリに分類なので、そのほかを実行する契約の内容に焦点を聞かせ滝。次のHTTPリクエストを加えて実行するために使用を表します:

のPOST / services/calculatorrest/operations/2364564565 HTTP/1.1のコンテンツタイプ:application / JSON形式のUser - Agent:ジャカルタCommons-HttpClient/3.0ホスト:localhost:8100 Content - Lengthを:25

リクエストでは、HTTP POST、およびURLを使用実行され、一時的なURLは、リダイレクトのテストで発見されます。 HTTPヘッダーのContent - TypeおよびContent - Lengthと省略されていないタイプと、コンテンツの長さを定義するために使用されているPOSTリクエストで送信されます。リクエストのボディはJavaScript Object Notation(JSON)は0.13 2つのデータメンバを使用してエンコードされたJSON形式のリクエストで定義されます:バッファが含まれるnumber1とnumber2。これらの2つのデータメンバが追加されるまでの数を表しています。以下の適切な応答を示しています:

HTTP/1.1の200のOKのContent - Type:アプリケーション/ JSONのContent - Lengthを:14サーバー:突堤(6.0.xの)("結果":3)
  

ヘッダContent - TypeおよびContent - Lengthには、JSONを使ってエンコードされ、単一のデータメンバが含まれて返されているコンテンツについて説明します。単一のデータメンバの結果、2つの数値を追加した結果です。このように、リクエストとレスポンスを見て、いくつかの精神的な計算を行うと、知っているだろうが3の合計で追加し、1と2の結果。契約の観点から、それはすべてOKですと思われるシステムが実装されて動作します。しかし、現実には、図のHTTPの会話をすべて偽造された。これは、次の質問につながる:ときに、どのように物理的には、契約を定義して契約を開発?純粋主義者は、"契約書には、クライアントとサーバーのプログラマーを実装するツールのいくつかの並べ替えを使用して定義されている場合があります。"純粋主義者の答えはいいですねもしそのようなツールは存在していたといいかもね。残念ながら、ツールを使用するRESTの設計には、テストやモックのURL層の基礎となることがHTTPの会話に基づくことができます。という事実は、手動では、HTTPの会話を生成するためのエディタを使用して、このようなツールを持っていないに直面して非常にエラーが発生しやすく、退屈です。私は、誰でもすればお勧めしないこと。ただし、契約を定義する必要がありますが、あなたのツールやエディタをせずに行うことはできません。ドキュメントの任意の並べ替えがなければ、契約を文字通りあなたの想像力の産物である。

 ソース: / jaxson /トランク/サイト/ルート/スクリプト/テンプレート/ testcontract.html 契約のテストページ

使用可能なテスト

testManager.runAll() "タイプ="ボタン"の値="実行するすべてのテスト"/"
試験地位
testManager.testPrototype() "タイプ="ボタン"の値="テストの試作"/" 未実行
時間/"テーブルborder ="1""

トレース出力

このコードは、比較的ので、私はそれを簡単に理解するために、重要な部分を強調表示し長いです。テストコードのJavaScriptファイルには、テストコードの基礎を提供する番号を含めるには、スクリプトタグを使用します。後には、基本スクリプトをロードし、強調表示されたコードをsetJsUnitTracerの最初の部分は、現在のHTMLページに生成された警告や情報メッセージとデバッグメッセージをリダイレクトします。具体的には、その出力は、太字では、HTMLコードの下部に表示されるid traceoutputと、テーブル要素内に生成されます。

他の太字のソースコードは、変数を参照する契約のURLは、テスト用のスクリプトで使用される表すbaseURLを変数です。このエリアのようにURLをクリアのすべての契約のURLを定義するために重要なのがサポートされています。場合は、URLの前に、その動的な性質のため、時間の場合、変数を宣言し、空の文字列を割り当てることを決定することはできません。太字のテキストの次の部分を変数(testsToRunを表す)と関数(testPrototype)関数testPrototypeですどのようにテストを書くことができるの例です。これら2つの重要なステップ:使用して同期を忘れないとメソッドtestManager.successを呼び出します。同期は、同期XMLHttpRequestを呼び出すようにするヘルパークラスです。通常、アプリケーションの場合は、非同期のXMLHttpRequestの呼び出しは、非同期クラスを使用します。の非同期および同期の要求とその理由のいずれかを選択したい議論の違いを見てみましょう。

ときにXMLHttpRequestを同期要求するために使用されると、XMLHttpRequestの応答をブラウザに制御を戻す前に待機します。ため、JavaScriptをロックするようにブラウザの原因は、マルチスレッドではないXMLHttpRequestの回答を待つ持つ問題である。より優れたユーザーエクスペリエンスについては、いつでも非同期要求を使用する必要があります。非同期要求を使用して、独自の問題があります。非同期要求は、JavaScriptに対応し、制御を返すまで待機しません。を実行する場合のテストは、非同期要求の問題のためのテストを順番ではなく、同時に実行されています。ときに、AjaxやRESTのコードを、親指は、次のルールを使用する記述:アプリケーションのための非同期要求、およびテスト用の同期要求を使用します。バックアップの関数の例testPrototypeへの行き方は、各テスト関数を示す必要がありますかどうかのテストに成功しました。

というのは、テストマネージャは、次のテストのときだけは、現在のテストが成功した実行されるすべてのテストが実行されますこれは必須です。この例では、成功したときに、メソッドtestManager.successと呼ばれています。メソッドの呼び出しが失敗し、失敗を示す方法を待機してテストを、複数の手順が必要と成功か失敗かを決定する前に、答えを待つ必要があることを示します。上で動かすと、例は、HTMLのソースコードファイルには、メソッドに関連付けますtestManager.setTestCasesテストマネージャをテストします。テストマネージャは、すべてのテスト変数testsToRunで定義されたのを反復処理すると、最初に定義されたメソッドにカプセル化されたプロキシを作成します。あなたが第2条にこれについての詳細を読むことができます。を実行する場合のテストではなく、テストマネージャの変数testManager変数testsToRun参照していない。テストマネージャメソッドsetTestCases後の初期化が完了したら、テストを実行することができます。例は、HTMLのソースコードでは、テーブル(

)を動的にテストへの参照を含むように定義されます。最初のテーブルのボタンをグループまたは個別にテストを実行するために使用されています。 、このメソッドはtestManager.runAll呼び出しは、すべてのテストを実行するには()。 、このメソッドはtestManagerを実行する個々のテストを実行する。testname]。 2番目の表は、ログ出力を生成するために使用されます。

聞かせの最初のテストでは、リダイレクトと加えて、次のコードスニペットで示す。

 ソース: / jaxson /トランク/サイト/ルート/電卓/ testcontract.htmlヴァールentityURL ="";ヴァールtestsToRun =(testVerifyAdd:()(情報(""testVerifyAdd関数は、"最初の"testVerifyRedirection上映); testsToRun.testVerifyRedirection();情報をもっと見る(""、"仕上げtestVerifyRedirection")を実行する;ヴァール状態=新しいObject(); state.number1 = 1; state.number2 = 2;ヴァールバッファ= JSON.stringify(状態);情報(""testVerifyAdd、"JSONのtestVerifyAddバッファ("+バッファ+ ")");ヴァール要求=新しい同期(); request.complete =関数(、、はresponseText、responseXMLをstatusText)(ヴァールStatusCodeに応答= JSON.parse(はresponseText);情報("testVerifyAdd.complete "、"検索結果を追加します("+はresponseText + ")");("JSONの結果"、3、response.result);("addTest")testManager.success;)request.POSTをassertEquals("アプリケーション/ JSONを"entityURL 、buffer.length、バッファ);)); ... 

コードスニペットは、テストが含まれ、JavaScriptのコードは、HTMLの断片を示してどのようにテストでは、JavaScriptによって定義されて呼び出す方法を示します。変数entityURL参照は、契約のURLを加えて実行するために使用。これは、URLを動的に別のテストでは、スニペットの中で説明していないで作成されている変数は、定義済みのURLが割り当てられていません。変数testsToRunの定義に含まれるには、テストの追加を行うために使用さを表す関数testVerifyAddです。テストを実行するには、テストマネージャは、動的に定義されたメソッドtestManagerを呼び出します。これtestsToRun.testVerifyAdd呼び出しtestVerifyAdd。テストするためのプロキシを作成する目的は、テストコールをテストハーネスを管理するためには、テストマネージャを有効にすることです。testVerifyAddの実装では、挿絵がないテストtestVerifyRedirectionと呼ばれます。 testVerifyRedirectionは、変数entityURLが参照の有効なURLを確認するを実行します。通知方法を説明していないテストでは、変数testsToRunではなく、testManagerを使用して参照されます。

以前、私はあなたと直接テストするテストを実行するtestManagerて呼び出す必要があります明らかにした。場合は、テストを実行すると、すでにテストを実行していない場合親指のこのルールにのみ適用されます。どうしてtestManagerを使用しないと主な理由の場合、例外が生成されている場合、終了するには、現在実行中のテストしたいです。例外のテスト結果では、テストtestManagerを使用して呼び出しがキャッチされている現在のテストを継続する場合は、すべて行ったします。もちろん、これは、この動作をしないかもしれないし、testManagerからテストを呼び出すことを意味していません。始めている選択はあなた次第ですが、それ以上の各呼び出しの理由を理解することが重要です。- testVerifyRedirectionテスト、さらにパフォーマンスのテストを説明していないと持つ。テストを確認しますが3の値に追加し、1と2の結果。このデータは、JavaScriptのオブジェクトインスタンスの状態では、インスタンス化し、代入されます。場合は、JSON形式JSON.stringifyメソッドを使用して、オブジェクトの状態をシリアル化します。

一度文字列バッファの状態を変換すると、サーバーのメソッドをrequest.POSTを使ってそれを送信します。このメソッドはrequest.POSTはHTTP POST要求は、RESTの要件を果たしている。時request.POSTをメソッド応答すると、メソッドが呼び出されますrequest.complete。 request.completeの匿名メソッドの実装では、返されたバッファにJSONを使ってフォーマットされます。状態には、JSONのバッファに変換するには、呼び出すメソッドJSON.parse。場合は、変数の応答には、返された状態を割り当てる。状態、およびほかの値が含まれている値は、メソッドassertEqualsを使用してテストされます。この値が3の場合、テスト用フレームワーク、トリガをキャッチし、例外を処理します。いずれかの例ではされていない場合は、テストが成功したテストが失敗したことがわかります。時のテストは、エラー状態の理由は、テストが失敗に失敗します。また、情報メッセージのようにあなたのテストと何をしているデータが送信されている知って生成されます。テストは、単一のテストとして書かれており、完全な契約書のテストを構成していません。するときには、クライアントの契約側のテスト実装、テストを採用するだろう、その成功し、テストが失敗するテストを含む開発技術を主導、今のクライアント側からサーバー側に焦点を移すことができます。あなたが完全に動作するサーバーサイドの実装しているが、したいのではなくモックのURL層を実装する。

難しい問題です、このソリューションの範囲については、Javaが使用されます。モックのURL層の目的に模倣するとサーバー側の機能を実装しています。模造とサーバーを実装する側の機能だけなのでテストケースをターゲットに実装することができます。例の場合では、1と2を追加する場合に実装することです。もちろん、1を加え、2は簡単ですし、モックのURLの場合には、数秒以内にそれを実装することができます。しかし、より複雑な例なので、あなたのソリューションを提供するように誘惑してはいけません。モックのURL層のフォーカスが正しいの要求と、特定のテストに対する応答を提供することです。これは、ロジックをテストする必要があるロジックを実装することにより、エラーを自分で設定しています。こう言っておこう:2つの数値の些細なほかの実装を想像し、どうするかは、あなたの実装が正常に動作しますか?その答えは、テストを書いております。ため、どのようにするには、テストが正しく実装されて知っているしかし、それが正しく、質問に答えていないのですか?答えはありませんが、そのモックのURL層の目的です。次のソースコードは、要求とは、契約の追加の応答を実装します。

 ソース: / jaxson.java.tests /開発スペース/ jaxson /テスト/電卓/ mockurl / DoMockAdd.javaパブリッククラスDoMockAdd(HttpServletRequestを要求HTTPServletResponseを応答)MockUrlTestCaseBase(公共の無効のprocessRequest拡張ServletExceptionをスロー( assertAreEqualJSONObject(リクエスト、"requestadd.json");試し( FileWriter.writeFileObject("アプリケーション/ JSONを" 答えは、"responseadd.json");)(例外e)(新しいServletExceptionをスローキャッチ(""、電子ファイル)の応答を書くことができませんでした;)response.setStatus(200);))

2つのメソッド呼び出しは太字で表示されます。このメソッドはassertAreEqualJSONObjectが送信されたデータは、ファイルrequestadd.jsonするためにJavaサーブレットが格納され比較されます。場合は、送信されたデータの場合、次のメソッドを呼び出すwriteFileObjectが実行されているファイルの内容と一致します。 writeFileObjectの目的は、クライアントにファイルをresponseadd.jsonの内容を送信することです。ファイルrequestadd.jsonとresponseadd.json定義済みの契約を2つの数値を追加するために使用表しています。クラスDoMockAddないアイデアは、操作のどのような目的を持っています。これだけ知っている場合は、要求し、応答を別のファイルで送信されるベースのファイルにマッチします。モックのURL層の実装が簡単な場合のみ2つの具体的な数字を追加し、1つの応答を生成する1つのケースに対処することができます。モックのURL層の例では、照合されますが、テストケースを参照して、複数のテストを実行します。場合、テストケースをマッチされると、次に、適切な応答が送信されます。ていない場合は、テストケースと一致しても応答がない、送信され、エラーが生成されます。

このメソッドはassertAreEqualJSONObjectファイル内では、JSONのデータを送信されているJSONのデータを比較する。は、バイトバイトの比較が行われると信じるように惑わされてはいけません。このメソッドはassertAreEqualJSONObject論理的な比較は、データのフォーマットに基づいて実行されます。これは、それ以外の場合は、空白やデータの状態に影響しない他の文字に失敗するテストを引き起こす可能性が重要です。限り、コースの場合は、特定のデータの書式設定をテストしたい場合は、テストでは、異なる書式設定のため失敗したくない。たとえば、XML他の技術は、ほとんどの場合、空白が失敗するためのテストが発生しない可能性が高いです。したら、これは契約書を確認し、クライアントスクリプトは、テストすることができますモックのURL層を作成しました。作業は、クライアントとサーバー側での作業、クライアントまたはサーバーの実装での動作を変更しないようにピンチに基づく。場合は、動作が変更され、その後、クライアントのテストスクリプトとにせURLを実装矛盾している。あなたがどちらもサーバーの場合は、テストや、実際の実装に対して実行しているのを知って、クライアントをしたい場合は、次のポイントは、契約書を作成する忘れてはならない:

•モックアップのURL層は、クライアントとサーバーの間の決定的な契約を表しています。

•モックアップのURL層は、契約のリクエストとレスポンスの定義ファイルを使用して実装されます。

•モックアップのURL層のみとテストケースをターゲットにテストすることができますので、ロジックのバグがあるかもしれない、その実装で使用される任意のコードを使用しないでください。

•場合は、ファイル内のデータ、およびバイト比較バイトの論理比較を使用していないと送信されたデータを比較する。ツーバイトバイトの比較、およびオブジェクトの状態とは何の関係もない空白を引き起こす可能性が失敗するテストを引き起こすだろう。場合は、テストでは、空白文字を確認する必要がありますこの規則には例外です。

•モックアップのURL層の上のリクエストが送信されている複数のテストを実行し、適切な応答を送信します。ほとんどの場合では、要求ファイルを使用してテストされ、応答を別のファイルに基づいています。

•場合は、モックのURL層では、ロジックを実装する必要があります、それは非常によくテストさの安定したとして、その実施のための参考資料として提供することを確認する方法は、クライアントとサーバーの機能との間の契約。

そのテストは、契約がどのように契約書を使用しての実装を表すサーバーの正しさをサイドの実装を確認するために使用されているクライアント側のテスト•。

一緒にtestdriven開発テクニックを使用してクライアント側の契約をテストやモックのURL層を開発する場合•。

•任意のプログラミング言語ではなく、クライアント側の契約をテスト実装することができますので、この記事は、ほとんどのアプリケーションの可能性がありますJavaScriptがベースだが、JavaScriptを使用しても意味になります。

•どちらのクライアントもサーバー側の実装やテストまで、お互い上の任意の依存関係を持つ必要があります。このように、モックのURL層またはサーバーの実装の問題を引き起こすことなく、クライアントの実装では、クライアントのテストに置き換えることができます。1 -動的契約4.Testingどのよう契約書を作成する図前の例では、契約の動的な側面と、特定のリダイレクトの問題をカバーしていない。のためのリダイレクトは、AjaxとRESTのパラダイムの問題の場合は、ダイナミックされている契約をテストしたい部分です大きな問題の一部であるリダイレクトをカバーできませんでした。ソリューションの理解"の定義とAjaxの哲学"セクションでは、Ajaxを可能と主張したを作成してコンテンツを動的に操作できます。ダイナミズムは、次の方法を含むことができる契約を延長:

特定のURLの一般的なURLに基づいて定義されて•

特定のコンテンツの定義のいずれかの例では、特定のURLに基づい•、一般的なURLまたは一般的なコンテンツの参照をハードコーディングされたり、クライアント側で参照されます。ハード一般的なリファレンスコードして、特定の参照に変換されます。何の計算例では、さらに操作のリダイレクトの一部に焦点を聞かせ関与して理解する。次のコードは、クライアント固有の追加操作をURLに一般的な追加操作を変換するURLが実現すれば、HTTPリクエストメソッド:GET /サービス/ calculatorrest /操作HTTP/1.1ののUser - Agent:ジャカルタCommons-HttpClient/3.0ホスト:localhostを表します: 8100のHTTPが実行されるGET、およびURLを/サービス/ calculatorrest /操作は、HTTP 1.1プロトコルを使用して呼び出されます。リクエストのこの部分が必要です。この例では、HTTPヘッダが必要とされていないPermutations14パターンを実装するには、ヘッダーの可能性が高い必要があります。このテストでは、必要な応答は次のとおり:

HTTP/1.1の201リダイレクト+ +ユーザーの場所:/ services/calculatorrest/operations/2364564565

これは、HTTPコード201ではなく、307または302が返されます。たちの応答コードの意味は考えている読者のために、私を明確にしましょう応答は少し奇妙に見える。の場合では、リクエストをサーバーは、実際の一時的なURLにリダイレクトしたい場合、その場合は、3xxシリーズでの応答コードを使用します。多くのほかの操作が実行される可能性がある電卓アプリケーションの場合には、リダイレクトすると、一時的です。したがって、適切な応答になるか307または302。ただし、複数の理由から、正しい答えではない。どちらの307または302は、次の理由により、この場合には正しくありません返す:

ブラウザ•自動的になり、XMLHttpRequestを与えていないのリダイレクトになりますリダイレクトされたURLオブジェクトを返します。

ので、複数のクエリを実行したりすることができます複数のリダイレクトを実行するにはなりたくない•自動リダイレクトを行う、有用ではありません。

•時のベースURLに要求を行う場合は、既知のリソースには、しかし、リダイレクトすることではないではなく、リソースがあなたにリダイレクトする必要がありますを作成します。ワールドワイドウェブコンソーシアム(W3C)は、HTTP 1.1の仕様では、201応答コードは、呼び出し元のURLは、これはLocation HTTPヘッダーで定義されている新しいURLで参照することができる新しいリソースを作成したことを示すために使用されます。したがって、にもかかわらず、307または302は、より適切な答えを201使用していることができます。実装の観点から、2364564565の識別子を動的に生成され、予測することはできません。テストの観点から、この問題がある場合は、識別子2364564565のためのテストを書くことができません。場合は、そのようにされ、あなたの原則に反するしたいサーバの実装のためのにせのURL層の代わりにすることである。これは、クライアントのテスト固有の識別子は、サーバの実装、また、生成する必要がないことを期待する理由はない。ソリューションは、固有の識別子が、テストをするというが存在し、識別子のフォーマットをテストするため、などが示されていません次のテスト。

 ソース: / jaxson /トランク/サイト/ルート/電卓/ testcontract.html ヴァールbaseURLを="/サービス/ calculatorrest /操作"; ヴァールentityURL ="";testVerifyRedirection:(); request.complete =関数(、、はresponseText、responseXMLをstatusText)(場合に(!= 201)のStatusCodeのStatusCode(("期待される201失敗を受けた"=新しい同期()(ヴァールリクエスト機能+のStatusCode);)entityURL = this._xmlhttp.getResponseHeader("場所"); 場合(entityURL == nullを| | entityURL.length"= baseURL.length)( nullにすることはできません")("リダイレクトされたURLが失敗する; インフォメーション("testVerifyRedirection"、"リダイレクトされたURL("+ entityURL + ")"); testManager.success("urltest");)request.get()baseURLを;))です。

 

テストでは、ハード変数baseURLに格納されます参照URLコード化された。動的に作成されたURLに格納されている場合、空の文字列が割り当てられてentityURL変数です。テストtestVerifyRedirection 1つの目的を持って、そのハード一般的なリファレンスコードを呼び出すことです。ハードコーディングされた一般的なリファレンスを呼び出すと、特定の動的参照を返します。契約を履行するために、次の2つのテストがあります。最初に、ステータスコード201を返すと、2番目されている識別子が生成されます。簡単にテストのステータスコードが201のは簡単で、意思決定が含まれます。テストの動的な識別子のため、もう少し複雑ですが、アプローチは、テストでの撮影です。テストでは、動的に生成された識別子の存在をテストするための2つの検証が含まれます。 2つの検証を動的識別子のテストの2つの最下位層です。以下の検証可能性の最低水準に最高のレベルから検証リスト:

テストデータの存在:通常は、存在をテストされ ヌル または notnull試験。テストがnullでない場合、そのデータが正しいことを意味しないが、それはデータがあることを確認していません。テストでは、データの動的な識別子を含むものとします。

テストデータの識別子が存在する:テストの存在は、動的な識別子の性質を知ることを意味します。通常、その意味は、元のデータとは何か方法は、動的に生成されたデータが表示されます知っている。

動的に生成された識別子のテストの書式設定:テストの書式識別子の形式についての何かを知ることを意味します。これは、識別子、一定の長さ、または数値の場合、特定の文字を含める必要が知らないという意味だ。電卓の例では、動的に生成された識別子の正しい書式のが、テストされない場合があったが、テストに基づいて長さが、希望の数値に基づく。注意してください時に一時的にデータを動的に生成するようにフォーマットするためのテストがありますスタートから最高レベルの右上に起動しない別の1つのバージョンを切り替える時の最低レベルでの動的なデータを、起動テストを実行するテストの段階。ください。これにより、動的なデータが存在することは危険な前提になります。たとえば、正しい書式のためのみの場合は、テストすると、動的なデータの欠落が誤って、動的なデータフォーマットのテストが失敗したとの間を識別することができなくなります。次のコードでは、URLのリダイレクトのJava実装を示します:

パブリッククラスRedirectionImplementation MockUrlTestCaseBase(パブリッククラスRedirectionImplementation拡張(HttpServletRequestを要求HTTPServletResponseを応答)MockUrlTestCaseBase(公共の無効のprocessRequest拡張( this.generateRedirection(応答、201、 request.getRequestURI()+"/ 2364564565");))

太字のコードは、リダイレクトが実装されて示しています。通知は、動的な識別子はハードコードされます。ないロジックです。場合は、同じクライアントがリダイレクトを複数回呼び出されると、同一の識別子を受け取る。これは、契約に違反することに見えますが、まだ違反ではありません。電卓のための契約は、リソースには、計算を実行するために使用することができますリダイレクトしている。クライアントが、仮定することはできませんサーバーが、これは、サーバーの動的な識別子を生成するのを制御している。場合、クライアントは、クライアントからの動的な識別子を受け入れなければならないし、モックのURLの目的には使用して動的な識別子を定義するための責任の場合、サーバは、表にする。動的しかし、動的な識別子を生成する可能性がどのようにテストすること契約書の正当性?このバックは、モックのURL層は、契約のように必要なものを定義するデュアル役割を持っている問題は、前のセクションで示すように、に行く場合はにせのURL層は、サーバーの実装では再利用されるロジックは、その正しさが含まれて問題が存在することができます。場合にして、それらのいくつかを作成し、それらの間を選択するための乱数アルゴリズムを使用する動的な識別子の中で様々な必要があります。したがって、いつ、次の点を覚えて動的な契約のテスト:

は、動的なデータを生成するための責任者であり、動的なデータを消費•図を。

特定のテストケースを定義することが、どのようにデータの書式設定について仮定する動的なデータを生成•。

動的なデータを消費者•動的なデータを受信したときは、データの正確さを確認検証の3つのレベルを適用する責任があります。

•テストの場合は、常に動的なデータをサポートしていません。たとえば、プロバイダは、データ形式に作られたの参照をサポートしていない場合があります。このケースでは、動的なデータの生成、およびエラーを生成する必要がある消費者は、エラーが生成されることを確認する必要があります。警告メッセージまたは情報メッセージで対応しようとしないでください。あなたは配管どのように折れた歯を修正するかを期待することはない。

記事は、ソニアLandeを提出


免責事項:弊社のウェブサイトは、この資料の内容については責任を負いません。 Webarticles無料の情報リソースです。
重要: この記事は、"テスト動的契約Ajaxを使った"自動ソフトウェアによって翻訳された。大変申し訳ございませんが発生した可能性があります任意のスペルミスを感じている。お客様のご理解いただき、ありがとうございます。

未実行

Online: 256 users browsing the articles directory