Задача
Я использую QUnit и следую этому ответу stackoverflow , который, кажется, работает в этом сценарии.
Данные, которые я пытаюсь передать в метод «success», не «поступают» - они не в требуемом формате или поступают как неопределенные. Я не вижу, где я иду не так.
Walk-через
Метод ' unitTest ', который снабжает мой ' methodUnderTest ' элементом DOM. methodUnderTest делает ajax-вызов jQuery, который mocked в модульном тесте. Затем вызывается success, и результат выполнения метода success формирует утверждение модульного теста.
код
Я настроил это как пример JSFiddle здесь , если вы хотите видеть выполнение кода (не выполняется должным образом). Но вот некоторые из них, на случай, если моя ошибка станет очевидной:
//stubbing the ajax call
jQuery.ajax = function (param) {
options = param;
};
//the data
var expectedData = jQuery.parseJSON({
'id': 'fbs',
'fieldName': 'fbs',
'data': 'fbs-text'
});
//call to success method, in unit test
options.success({
sdata: expectedData,
textStatus: 'is-this-data-arriving',
jqXhr: 123
});
//the success method that is failing to get the expected data
function handleSuccess (sdata, textStatus, jqXhr) {
//problem is here not this success method never gets the data
console.log('sdata: ' + sdata + '|textStatus:' + textStatus + '|jq:' + jqXhr);
jQuery('#' + sdata.fieldName + '-loading').attr('alt', 'modified');
};