Javascript 如何使用extjs使用sencha测试模拟ajax调用
我必须在sencha测试中仔细检查ajax调用的响应。 请告诉我怎么做。。下面是我的示例代码Javascript 如何使用extjs使用sencha测试模拟ajax调用,javascript,ajax,extjs,jasmine,sencha-test,Javascript,Ajax,Extjs,Jasmine,Sencha Test,我必须在sencha测试中仔细检查ajax调用的响应。 请告诉我怎么做。。下面是我的示例代码 beforeEach(()=> { sim = Ext.ux.ajax.SimManager.init({}); controller = Ext.create('xxxx.controller.Search'); AutoLink = Ext.create('xxxx.model.search.AutoLink', { objectType: 'myob
beforeEach(()=> {
sim = Ext.ux.ajax.SimManager.init({});
controller = Ext.create('xxxx.controller.Search');
AutoLink = Ext.create('xxxx.model.search.AutoLink', {
objectType: 'myobj'
});
});
it('Should run processResponse when doSearch executes', function() {
const callback = () => {};
sim.register({
'abc.com/myurl.aspx': {
status: 401,
responseText: JSON.stringify({
'success': true,
'data': [{
'autoLink': false, 'status': 'OK', 'objectType': 'Person',
'results': [{ 'ref': 12345, 'managedBy': '01', 'ethnicAppearance': '1', 'gender': '1', 'rules': ['Forename, surname','nickname, DOB']}],
'gridDescriptor': [{'fields': [{'name': 'surname','text': 'Surname','width': 100}],
'sortOrders': ['surname','forename1']
}]
}]
})
}
});
spyOn(controller, 'doSearch'); // internal method which calls the Ext.Ajax
spyOn(controller, 'processResponse'); // internal method which process the response
controller.doSearch(AutoLink, callback, this); // making an ajax call
setTimeout(function () {
expect(controller.processResponse).toHaveBeenCalled();
}, 1000);
});
现在,当运行测试用例时调用processResponse,这很好,但我想验证ajax响应 我就是这样做的:
$.ajax({
url: _spPageContextInfo.webServerRelativeUrl + "/_api/web/lists/getbytitle('Test%203')/items(" + itemId + ")/FieldValuesAsText",
method: 'GET',
headers: {
'accept': 'application/json;odata=verbose'
}
}).then(function (data) {
console.log(data);
}
我不知道这是否能帮助你实现你想要的目标。但我建议你试试看。然后,您可以转到控制台并将数据对象保存到一个变量中(仅用于调试目的),或者从控制台本身查看对象链并检查ajax调用返回的数据。所以在我的例子中,我会在这里找到员工的名字:-data.d.results[0]。PreferredName。如果我想使用它,我可以把它保存在一个变量中。确保在“then”函数中执行此操作。下面是将名称保存到变量的示例:
.then(function (data) {
empName = data.d.results[0].PreferredName;
}
controller.doSearch
是否返回ajax响应?还是一个用响应解决的承诺
?另外,为什么要使用setTimeout
?你可以写