【问题标题】:Testing AngularJS with Jasmine via Karma通过 Karma 使用 Jasmine 测试 AngularJS
【发布时间】:2013-05-15 16:38:46
【问题描述】:

我目前正在使用 Jasmine 测试我的 AngularJS 应用程序,它正在通过规范。我试图用 Karma 运行测试,但它失败了。看来 Karma 看不到 Jasmine 规范中定义的 $scope,但 Jasmine runner 认为它很好。

我的 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,现在它运行良好。找到合适的文档。做了一个错误的假设。
  • 这是因为 ANGULAR_SCENARIO 用于 e2e 测试,这需要与您用于单元测试的文件不同的 karma.conf 文件
  • 将所有这些一起使用的文档位于何处?
  • @andy 如果您已经回答了自己的问题,请将解决方案作为实际答案提交。这样,这个问题就不会出现在“未回答”部分;-)

标签: angularjs jasmine karma-runner


【解决方案1】:

我删除了 ANGULAR_SCENARIO 和 ANGULAR_SCENARIO_ADAPTER,它现在运行良好。找到合适的文档。做了一个错误的假设。

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

【讨论】:

    猜你喜欢
    • 2014-12-07
    • 2014-05-04
    • 2014-09-20
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多