在运行块内模拟$ window

时间:2014-12-01 16:15:48

标签: angularjs jasmine karma-runner karma-jasmine

我的应用程序中的以下代码应该重定向到身份验证服务。由于初始页面重新加载,我的所有测试都失败了。

angular('app', [])
    .run(['$window', function($window) {
        $window.location = 'auth url' + '&redirect=' + $window.location.href;
    };

测试错误:Some of your tests did a full page reload!

如何在.run块中模拟$ window.location以防止页面重新加载?

1 个答案:

答案 0 :(得分:1)

在茉莉花测试中配置$ offer服务中的$ window。例如:

beforeEach(module("app"), function ($provide) {
   //mock a $window and $window.location (since $window.location.href is used from mod.run)
   var $window = {};
   $window.location = {};

   //configure this value with the provider.
   $provide.value("$window", $window);
});

现在,模块中使用的任何$窗口都将替换为$ window对象。