1

このような単体テストがあります

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
    ....
4

1 に答える 1

5

を呼び出すときにインジェクションが機能するとは思わないdescribe。インジェクションをdescribe呼び出しから呼び出しに移動することで解決したのと同じエラーがありましたbeforeEach

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

複数持つことができるbeforeEachので、これを既存の の上に追加するだけbeforeEachです。

于 2013-11-26T12:30:23.587 に答える