我正在使用Qunit测试.js脚本。
我有一个静态.html测试工具,其中包含.js“测试中的代码”(CUT)并包含适当的标记。我正在使用另一个包含的脚本中的QUnit进行测试
此工具和测试脚本驻留在项目中:Application.UI.Tests.JScript
。
CUT中有一些AJAX调用,它们具有相对于使用它的视图位置的目标
视图和脚本驻留在MVC项目的常规文件夹中:Application.UI
。
Application.UI.Tests.JScript
的构建事件执行脚本和内容文件夹的Del
和XCopy
,以确保测试针对最新版本的CUT运行。
示例代码:
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转到某个操作:
[ValidateInput(false)] //TODO for now
public JsonResult actionName(FormCollection formIn)
{
string jsonData = formIn[0];
JsonResult result = new JsonResult();
result.Data = jsonData;
return result;
}
现在只返回数据,最终会调用Domain层中的正确逻辑。
问题:
如何在Application.UI
中从静态.html页面调用运行Application.UI.Tests.JScript
项目中的控制器上的CUT调用AJAX操作,而不编辑CUT以包含特定于测试的信息?
答案 0 :(得分:0)
将url
值从actionName
更改为/Controller/actionName
会使网址相对于网站的根目录,例如。
$.ajax({
url: 'actionName'
, type: 'post'
, data: dataToSend
, dataType: 'json'
, success: function (returnedData) {
alert('This was received by server: ' + returnedData);
}
});