我想用Karma和Jasmine来测试我的AngularJS应用程序 . 我已经安装了所有与业力有关的事情 . 在karma.conf.js文件中,我给出了gulped bower.js(它将包含所有bower组件)并吞下all.js(所有js文件)和testcase文件 . 但我得到一个依赖性问题,这是不允许我进一步的 . 如果我在不使用beforeEach的情况下编写简单的测试用例,它将获得perferctly执行 . 但我正在研究真正的项目,所以需要将控制器注入我的模块 . 但是当我使用beforeEach时(注入......,我得到了这个问题 . 我想知道哪里出了问题 .

所以这是我的karma.conf.js

files: [
            './tests/_bower.min.js',
            './bower_components/angular-mocks/angular-mocks.js',
            ' D:/testCase/project-pro/public_html/js/all.js',

            './tests/demotest.spec.js'
        ],

和我简单的测试用例

describe('settingsCtrl', function () {
        var $controller, settingsCtrl, scope;


        beforeEach(angular.mock.module('app'));

        // Inject the $controller service to create instances of the controller we want to test
        beforeEach(inject(function (_$controller_, _$rootScope_) {
            scope = _$rootScope_.$new();
            $controller = _$controller_;
        }));

       //  Verify our controller exists
      it('should be defined', function() {
        expect(settingsCtrl).toBeDefined();
      });

    });

这是我的问题

TypeError: $browser.state is not a function
                at 
                at $LocationProvider.$get (tests/_bower.min.js:23406:34)
                at Object.invoke (tests/_bower.min.js:15717:17)
                at tests/_bower.min.js:15534:37
                at getService (tests/_bower.min.js:15676:39)
                at Object.invoke (tests/_bower.min.js:15708:13)
                at tests/_bower.min.js:15534:37
                at getService (tests/_bower.min.js:15676:39)
                at Object.invoke (tests/_bower.min.js:15708:13)
                at tests/_bower.min.js:15538:79
                at forEach (tests/_bower.min.js:11575:20)
            TypeError: Cannot read property 'checkOverlapForADRrow' of undefined
                at 
                at UserContext. (tests/demotest.spec.js:68:31)
                at 
    Chrome 66.0.3359 (Windows 7 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.004 secs / 0 secs)