使用Karma通过Jasmine测试AngularJS

4

我目前正在使用Jasmine测试我的AngularJS应用程序,它正在通过规范。我尝试使用Karma运行测试,但是失败了。似乎Karma无法看到在Jasmine规范中定义的$scope,但Jasmine运行器能够正常看到它。

我的karma.conf.js:

frameworks = ['jasmine'];
colors = true;
singleRun = true;
files = [
    JASMINE,
    JASMINE_ADAPTER,
    ANGULAR_SCENARIO,
    ANGULAR_SCENARIO_ADAPTER,
    'lib/jquery-1.9.1.min.js',
    'lib/angular.min.js',
    'lib/angular-mocks.js',
    'lib/jquery.scrollTo.js',
    'lib/jquery-ui.min.js',
    'lib/calendar.js',
    'lib/date.js',
    'src/app.js',
    'spec/*.spec.js'
];
browsers = [
    'PhantomJS',
    'Firefox'
];

我的 test.spec.js 文件:
describe('Application startup', function(){
    beforeEach(module('app'));
    describe('MainCtrl', function(){
        var scope, ctrl;
        beforeEach(inject(function($rootScope, $controller){
            scope = $rootScope.$new();
            ctrl = $controller('MainCtrl', {
                $scope: scope
            });
        }));
        it("should initialize $scope.testLoad to 42", function(){
            expect(scope.testLoad).toBe(42);
        });
});
});

我得到的输出:
expect undefined toBe 42

既然Jasmine没有问题,那显然是Karma或我的配置文件出了问题。发生了什么?


我移除了 ANGULAR_SCENARIO 和 ANGULAR_SCENARIO_ADAPTER,现在它运行良好。找到了适当的文档。做出了错误的假设。 - andy
2
这是因为ANGULAR_SCENARIO是为端到端测试设计的,而这需要一个单独的karma.conf文件,与您用于单元测试的文件不同。 - Tomas Romero
这些东西一起使用的文档在哪里? - vcardillo
@andy 如果您已经回答了自己的问题,请将解决方案作为实际答案提交。这样,这个问题就不会出现在“未回答”的部分;-) - Tyler Eich
1个回答

1

我移除了ANGULAR_SCENARIO和ANGULAR_SCENARIO_ADAPTER,现在它可以正常运行了。找到了适当的文档。做出了错误的假设。

感谢@canotto90和@Tyler Eich的帮助和澄清。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接