-1

我必须在我的 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 响应。

4

1 回答 1

0

这就是我的做法:

$.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”函数中执行此操作。这是将名称保存到 var 的示例:

.then(function (data) {
     empName = data.d.results[0].PreferredName;
 }
于 2018-07-09T15:19:19.793 回答