我的 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 名称,然后在原始函数中使用arguments.callee.caller.name来确定该函数是由自身调用还是被 Jasmine 调用。不幸的是,arguments.callee.caller.name总是返回 undefined,我怀疑这是由 Angular 和 Jasmine 相互链接的方式引起的。