Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了angularjs – Angular JS – 使用Karma / Jasmine测试页面重定向功能大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的Angular控制器中有一个函数,如下所示:
$scope.MyFunction = function(){
    $scope.myVariable = "something";
    $scope.myOtherVariable = "something else";
    window.LOCATIOn.href = "/path/to/page"; 
}

一个简单的Jasmine测试涵盖了上述功能,看起来像:

describe('my test',function(){
    it('should pass',function(){
        scope.MyFunction();
        expect(scope.myVariablE).toBe('something');
        expect(scope.myOtherVariablE).toBe('something else');     
    });
});

上面的测试本身通过,但随后Karma在控制台中抛出以下错误

页面重定向导致Karma引发此警告.什么是最好的解决方法

我想在Jasmine测试中给出匿名函数和Angular名称,然后在原始函数中使用arguements.callee.caller.name来确定函数是自己调用还是Jasmine调用.不幸的是,arguments.callee.caller.name总是返回undefined,我怀疑它是由Angular和Jasmine相互链接的方式引起的.

问这个问题已经很久了,但是下面的方法应该更清洁:

通过更改原始函数以使用Angular的$window服务而不是浏览器窗口对象,可以编写不需要修改生产代码虑任何运行时参数的测试.这当然要求$window是找到函数的控制器的依赖项.

使用angular-mocks/ngMock,类似于:

var fakeWindow = {
  LOCATIOn: {
    href: ''
  }
}
// instantiate controller with mock window
beforeEach(inject(function($controller) {
  $controller('YourCtrlName',{
    $window: fakeWindow
  });
}));

应该允许测试通过,假设控制器不需要$window其他任何东西.

大佬总结

以上是大佬教程为你收集整理的angularjs – Angular JS – 使用Karma / Jasmine测试页面重定向功能全部内容,希望文章能够帮你解决angularjs – Angular JS – 使用Karma / Jasmine测试页面重定向功能所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。