Как изменить цель вызова AJAX при вызове из другого представления / страницы? - PullRequest
0 голосов
/ 12 января 2011

Я тестирую скрипт .js с использованием Qunit.

У меня есть статический .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;
}

, которое на данный момент просто возвращает данные и в конечном итоге вызовет правильную логику на уровне домена.


Вопрос: Как я могу заставить CUT вызывать действие AJAX на контроллере в работающем проекте Application.UI со статической страницы .html в Application.UI.Tests.JScript, не редактируя CUT для включения информации, специфичной для тестирования?

1 Ответ

0 голосов
/ 19 января 2011

Изменение значения url с actionName на /Controller/actionName сделает URL-адрес относительно корня сайта, например,

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