Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用extjs使用sencha测试模拟ajax调用_Javascript_Ajax_Extjs_Jasmine_Sencha Test - Fatal编程技术网

Javascript 如何使用extjs使用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

我必须在sencha测试中仔细检查ajax调用的响应。 请告诉我怎么做。。下面是我的示例代码

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
?你可以写