热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我该如何模拟在AngularJSJasmine单元测试中返回诺言的服务?

我该如何模拟在AngularJSJasmine单元测

我不确定为什么您的方法行不通,但是我通常使用该spyOn函数来完成。像这样:

describe('Testing remote call returning promise', function() {
var myService;
beforeEach(module('app.myService'));
beforeEach(inject( function(_myService_, myotherService, $q){
myService = _myService_;
spyOn(myotherService, "makeRemoteCallReturningPromise").and.callFake(function() {
var deferred = $q.defer();
deferred.resolve('Remote call result');
return deferred.promise;
});
}
it('can do remote call', inject(function() {
myService.makeRemoteCall()
.then(function() {
console.log('Success');
});
}));

还要记住,您将需要$digest调用要调用的then函数。请参阅$
q文档的“
部分。

在仔细研究您的操作之后,我认为我在您的代码中看到了问题。在中beforeEach,您将设置myotherServiceMock为一个新对象。将$provide永远不会看到这个参考。您只需要更新现有参考:

beforeEach(inject( function(_myService_, $q){
myService = _myService_;
myotherServiceMock.makeRemoteCallReturningPromise = function() {
var deferred = $q.defer();
deferred.resolve('Remote call result');
return deferred.promise;
};
}





推荐阅读
author-avatar
BYREAD315794103
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有