首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jasmin Mock $http (然后,捕捉)

Jasmin Mock $http (然后,捕捉)
EN

Stack Overflow用户
提问于 2016-10-12 14:26:05
回答 1查看 712关注 0票数 3

多年来,我一直使用下面的代码来测试下面的代码示例。

代码语言:javascript
复制
function loadAccounts() {
  return AccountCaller.loadAccounts()
  .then(function(response){
    AccountsModel.accounts = response.accounts;
  })
  .catch(function(error){
    ErrorHandler.raise(error);
  });
}

var spy= spyOn(mock, 'loadAccounts').andCallFake(function () {
        return {
            then: function (callback) {
                return callback(response);
            }
        };
    });

上面的代码在'.then‘上运行良好,但是我最近引入了'.catch’,现在我的测试失败了'TypeError:无法读取未定义的属性'catch‘。

任何关于我如何处理'.catch‘元素的想法,如果我删除它,那么代码测试运行良好!

干杯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-12 14:45:47

then的间谍中有return callback(response);,但是回调不返回任何东西,这就是为什么您在错误中获得undefined的原因。您要返回的东西至少需要附加某种catch方法。您可以使用这样的方法来测试:

代码语言:javascript
复制
var spy= spyOn(mock, 'loadAccounts').andCallFake(function () {
    return {
        then: function (callback) {
            callback(response);
            return {catch: function() {}};
        }
    };
});

^^我不一定会这样做,但它会让你朝着正确的方向前进。考虑返回包装在callback(response)中的Promise的结果。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40001180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档