Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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 测试$httpProvider.interceptors.push()是否已在Angular中使用jasmine调用_Javascript_Angularjs_Unit Testing_Jasmine - Fatal编程技术网

Javascript 测试$httpProvider.interceptors.push()是否已在Angular中使用jasmine调用

Javascript 测试$httpProvider.interceptors.push()是否已在Angular中使用jasmine调用,javascript,angularjs,unit-testing,jasmine,Javascript,Angularjs,Unit Testing,Jasmine,我在这里找到了许多关于如何测试Angular的配置阶段的文章,并且我能够根据和模块配置创建我的测试。我唯一无法解决的问题是检查是否添加了拦截器。我不需要测试服务,因为它是一个第三方的东西,我认为它已经被测试了-希望。 问题是,我如何监视配置阶段调用的$httpProvider.interceptors.push方法 提前谢谢你的帮助 这是我的密码: (函数(){ "严格使用",; 角度.module('myapp'[ //角模 “ngAnimate”, "ngRoute",, //自定义模块 “

我在这里找到了许多关于如何测试Angular的配置阶段的文章,并且我能够根据和模块配置创建我的测试。我唯一无法解决的问题是检查是否添加了拦截器。我不需要测试服务,因为它是一个第三方的东西,我认为它已经被测试了-希望。 问题是,我如何监视配置阶段调用的$httpProvider.interceptors.push方法

提前谢谢你的帮助

这是我的密码:

(函数(){
"严格使用",;
角度.module('myapp'[
//角模
“ngAnimate”,
"ngRoute",,
//自定义模块
“myapp.layout”,
//第三方模块
“LocalStorageModule”,
“http身份验证侦听器”,
“餐厅式”
])
.config(函数(重新启动提供程序){
RestangularProvider.setBaseUrl('http://.../services/webapi/');
})
.config(函数(localStorageServiceProvider){
localStorageServiceProvider.setPrefix('myapp');
})
.config(函数($httpProvider){
$httpProvider.interceptors.push('authInterceptorFactory');
});
})();
"严格使用",;
描述('myapp配置',函数(){
var RestangularProvider,
localStorageServiceProvider,
$httpProvider;
//模块
beforeach(函数(){
角度模块('myapp.layout',[]);
模块('http-auth-interceptor',[]);
});
//提供者
beforeach(函数(){
模块('restangular',函数(\u RestangularProvider\uu){
restanglarprovider=\u restanglarprovider\uu;
spyOn(RestangularProvider,'setBaseUrl')。和.callThrough();
});
模块('LocalStorageModule',函数(\u localStorageServiceProvider){
localStorageServiceProvider=\u localStorageServiceProvider;
spyOn(localStorageServiceProvider,'setPrefix')。和.callThrough();
});
模块('myapp',函数($httpProvider){
$httpProvider=\$httpProvider\\;
spyOn($httpProvider.interceptors,'push')。和.callThrough();
});
//模块(“myapp”);
注入();
});
描述('Restangular configuration',function()){
它('setBaseUrl已设置',函数(){
expect(RestangularProvider.setBaseUrl).toHaveBeenCalled();
});
});
描述('localStorage configuration',function()){
它('设置了setPrefix',函数(){
expect(localStorageServiceProvider.setPrefix).toHaveBeenCalled();
});
});
描述(“$httpProvider配置”,函数(){
它('添加了拦截器',函数(){
expect($httpProvider.interceptors.push).tohavebeencall();
});
});
});

我自己刚做过这件事,实际上非常简单。下面是两种方法,第一种是我推荐的方法

需要记住的是,当您初始化模块时,配置部分将自动运行,您可以使用它直接测试或帮助设置测试

选项1-使用假模块进行设置

description('config set$httpProvider interceptor',函数(){
var$httpProvider;
beforeach(函数(){
//首先我们初始化一个随机模块,我们将得到$httpProvider
//然后用它来做间谍。
模块(函数($httpProvider){
$httpProvider=\$httpProvider\\;
spyOn($httpProvider.interceptors,'push');
});
//现在我们初始化要测试的应用程序,$httpProvider将
//以前的间谍。
模块(“myapp”);
注入();
});
它('应该添加到$httpProvider拦截器',函数(){
expect($httpProvider.interceptors.push)
.Tohavencalledwith('authInterceptorFactory');
});
});
选项2-仅使用您的模块

description('config set$httpProvider interceptor',函数(){
var$httpProvider;
beforeach(函数(){
//首先,我们初始化您的模块,我们将获得$httpProvider
//然后用它来断言。
模块('myapp',函数($httpProvider){
$httpProvider=\$httpProvider\\;
});
注入();
});
它('应该添加到$httpProvider拦截器',函数(){
expect($httpProvider.interceptors).toEqual(['authInterceptorFactory']);
});
});

同样,我的建议(以及我的做法)是选择1。

不确定为什么这个答案从未被接受。。。应该是。