gpt4 book ai didi

javascript - angularjs:如何在单元测试中模拟 $rootScope

转载 作者:行者123 更新时间:2023-11-30 08:48:16 25 4
gpt4 key购买 nike

我有一个看起来像这样的单元测试

describe('Interceptor: myInterceptor', inject(function($rootScope){
var rootScope, routeParams = { id: null };

beforeEach(module('MyApp', function ($provide) {
$provide.factory('$routeParams', function () { // mock $routeParams
return routeParams;
});

rootScope = $rootScope.$new();
$provide.value('$rootScope', rootScope); // mock $rootScope

}));
....
}));

但是,当我执行“inject(function($rootScope){ ..”时,如上所示,出现以下错误(使用 Karma 和 PhantomJS):

PhantomJS 1.9.2 (Mac OS X) Interceptor: myInterceptor encountered a declaration exception FAILED
TypeError: 'null' is not an object (evaluating 'currentSpec.$modules')
at workFn (/dev/myapp/app/bower_components/angular-mocks/angular-mocks.js:2072)
at /dev/myapp/test/spec/interceptors/my-interceptor.js:67
....

最佳答案

我认为在调用 describe 时注入(inject)不起作用。我有同样的错误,我通过将注入(inject)从我的 describe 调用移动到 beforeEach 调用来解决:

var rootScope;
beforeEach(inject(function ($rootScope) {
rootScope = $rootScope.$new();
}));

您可以有多个 beforeEach,所以只需将这个添加到您现有的 beforeEach 之上即可。

关于javascript - angularjs:如何在单元测试中模拟 $rootScope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19977489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com