我现在用Jasmine测试我的AngularJS应用程序,它正在通过规范.我尝试用Karma运行测试,但它失败了.似乎Karma看不到Jasmine规范中定义的$scope,但是Jasmine的跑者看起来很好.
我的karma.conf.js:
@H_404_13@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:
@H_404_13@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); }); }); });我得到的输出:
@H_404_13@expect undefined toBe 42由于Jasmine正在通过它而没有任何问题,它显然是Karma或我的配置文件.这是怎么回事?
解决方法
我删除了ANGULAR_SCENARIO和ANGULAR_SCENARIO_ADAPTER,现在运行正常.找到合适的文档.做了一个糟糕的假设.
感谢@ canotto90和@Tyler Eich的帮助和澄清.