2011-01-12 14 views
0

Qunitを使用して.jsスクリプトをテストしています。別のビュー/ページから呼び出すときにAJAX呼び出しターゲットを変更するにはどうすればよいですか?

私は静的な.htmlテストハーネスを持っています。これは.js "被テストコード"(CUT)を含み、適切なマークアップを含んでいます。私は含まれている別のスクリプトでQUnitを使ってテストしています。
このハーネスとテストスクリプトは、プロジェクト:Application.UI.Tests.JScriptにあります。

CUTには、それを使用するビューの位置を基準としたターゲットを持つAJAX呼び出しがあります。
ビューとスクリプトは、MVCプロジェクトの従来のフォルダ:Application.UIにあります。

Application.UI.Tests.JScriptのビルドイベントでは、スクリプトとコンテンツフォルダのDelXCopyが最新のバージョンのCUTのコピーに対して確実に実行されます。

例のコードは:ちょうど今のデータを返す

[ValidateInput(false)] //TODO for now 
public JsonResult actionName(FormCollection formIn) 
{ 
    string jsonData = formIn[0]; 
    JsonResult result = new JsonResult(); 
    result.Data = jsonData; 
    return result; 
} 

をし、最終的には、ドメイン層における適切なロジックへの呼び出しを持つことになります。

sendDataToServerViaAjax: function() { 
    var dataToSend = somefunctionThatReturnsData(); 

    $.ajax({ 
     url: 'actionName' 
     , type: 'post' 
     , data: dataToSend 
     , dataType: 'json' 
     , success: function (returnedData) { 
      alert('This was received by server: ' + returnedData); 
     } 
    }); 
} 

actionNameのは、アクションになります。


質問: はどのようにテストのための具体的な情報が含まれるようにCUTを編集せずCUTはApplication.UI.Tests.JScriptに静的.htmlのページから実行しているApplication.UIプロジェクトのコントローラ上のAJAXアクションを呼び出すことができますか?

答えて

0

urlの値をactionNameから/Controller/actionNameに変更すると、サイトのルートに関連するURLが作成されます。

$.ajax({ 
    url: 'actionName' 
    , type: 'post' 
    , data: dataToSend 
    , dataType: 'json' 
    , success: function (returnedData) { 
     alert('This was received by server: ' + returnedData); 
    } 
}); 
関連する問題