javascript - Jasmine - 模拟 spy On.and.callFake http成功错误

标签 javascript angularjs jasmine

在我的 Controller 中,我调用了 http 服务。这是我的 Controller :

myApp.controller('MyController', function MyController($scope, myData) {
  myData.getItemsByPage(1, 10)
    .success(function (data, status, headers, config) {
        $scope.items = data.items;
    })
    .error(function (data, status, headers, config) {
        var test = 1;
    });
});

这是 Jasmine 测试:

it('it should return results', function () {
  var results = {
    "items": [
        {"Title": "Star Wars1","Year": "1977"},
        {"Title": "Star Wars2","Year": "1980"},
        {"Title": "Star Wars3","Year": "1983"}]
  };

  spyOn(myData, 'getItemsByPage').and.callFake(function (message, success, fail) {
        return {
            success: function (successCallback) {
                var status = {};
                var headers = function() {
                    return {
                        'x-pagination': '{"totalCount": 3}'
                    }
                };
                var config = {};

                successCallback(results, status, headers, config);
            },
            error: function (fail) {
                var x = 1;
            }
        }
    });
    $rootScope.$apply();
    $controller('MyController', { $scope: $scope });
});

我遇到了异常 “TypeError:无法获取未定义或空引用的属性‘错误’”

最佳答案

出于某种原因,您必须在调用 success 方法后返回一个错误对象。

spyOn(myData, 'getItemsByPage').and.callFake(function (message, success, fail) 
{
    return {
        success: function (successCallback) {
            var status = {};
            var headers = function() {
                return {
                    'x-pagination': '{"totalCount": 3}'
                }
            };
            var config = {};

            successCallback(results, status, headers, config);

            return {
                error: function (errorCallback) {
                    var x = 1;
                }
           }
        },
        error: function (fail) {
            var x = 1;
        }
    }
});

关于javascript - Jasmine - 模拟 spy On.and.callFake http成功错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39000688/

相关文章:

javascript - 如何绑定(bind)每次 ng-click 提交一次?

javascript - 单击更改颜色

javascript - Meteor 0.8.0+,如何为长时间运行的代码提供 'busy spinner'?

javascript - 建立这样的网站所需的技术

angularjs - 在 ui-grid AngularJS 中隐藏列标题

javascript - 测试使用 setInterval 或 setTimeout 的 Angular2 组件

javascript - 嵌套路由请求被解释为对 CSS 文件的请求

html - Material 图标连字不适用于 Pug

javascript - 单元测试传递 Promise 的 Angular 指令表达式属性

javascript - 如何使用 Jasmine 测试 HTML DOM click()?