使用 Jasmine 测试 AngularJS 控制器导致 RubyMine 出错
Testing AngularJS controller with Jasmine causes error in RubyMine
我尝试在 RubyMine 中使用 Jasmine 测试我的 AngularJS 控制器。
这是我的测试
'use strict';
describe('MainCtrl', function(){ var scope;
beforeEach(module('myModule'));
beforeEach(inject(function($rootScope) {
scope = $rootScope.$new(); }));
it('should define more than 5 awesome things',
inject(function($controller) {
expect(scope.awesomeThings).toBeUndefined();
$controller('MainCtrl', {
$scope: scope
});
expect(angular.isArray(scope.awesomeThings)).toBeTruthy();
expect(scope.awesomeThings.length > 5).toBeTruthy(); })); });
我使用 Karma 来运行这个测试。为了配置 RubyMine 以运行测试,我按照这些教程中的说明进行了所有操作 https://www.jetbrains.com/ruby/webhelp/preparing-to-use-karma-test-runner.html
https://www.jetbrains.com/ruby/webhelp/running-unit-tests-on-karma.html
这是我的 Karma 配置文件
'use strict';
module.exports = function(config) {
config.set({
autoWatch : false,
frameworks: ['jasmine'],
browsers : ['PhantomJS'],
plugins : [
'karma-phantomjs-launcher',
'karma-jasmine'
] }); };
但是我在尝试运行测试时遇到了这个错误
src/app/main/main.controller.spec.js:3 describe('MainCtrl',
function(){ ^ ReferenceError: describe is not defined
at Object.<anonymous> (src/app/main/main.controller.spec.js:3:1)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:929:3
我该如何解决这个问题?我很乐意提供任何帮助。
将它添加到您的插件中 'karma-spec-reporter'
然后您应该能够 运行 它 - 我相信它失败了,因为它正在寻找规范报告程序。
除了使用业力转轮。您需要在配置中添加如下内容:
files: [
'bower_components/angular/angular.js',
'bower_components/angular-mocks/angular-mocks.js',
'js/**/*.js',
'../../specs/*.js'
],
具有适当的文件列表。您需要包括所有规范以及您需要为您的应用程序加载的任何文件,例如 angular 和其他库。
我尝试在 RubyMine 中使用 Jasmine 测试我的 AngularJS 控制器。
这是我的测试
'use strict';
describe('MainCtrl', function(){ var scope;
beforeEach(module('myModule'));
beforeEach(inject(function($rootScope) { scope = $rootScope.$new(); }));
it('should define more than 5 awesome things', inject(function($controller) { expect(scope.awesomeThings).toBeUndefined();
$controller('MainCtrl', { $scope: scope }); expect(angular.isArray(scope.awesomeThings)).toBeTruthy(); expect(scope.awesomeThings.length > 5).toBeTruthy(); })); });
我使用 Karma 来运行这个测试。为了配置 RubyMine 以运行测试,我按照这些教程中的说明进行了所有操作 https://www.jetbrains.com/ruby/webhelp/preparing-to-use-karma-test-runner.html https://www.jetbrains.com/ruby/webhelp/running-unit-tests-on-karma.html
这是我的 Karma 配置文件
'use strict';
module.exports = function(config) {
config.set({ autoWatch : false,
frameworks: ['jasmine'], browsers : ['PhantomJS'], plugins : [ 'karma-phantomjs-launcher', 'karma-jasmine' ] }); };
但是我在尝试运行测试时遇到了这个错误
src/app/main/main.controller.spec.js:3 describe('MainCtrl', function(){ ^ ReferenceError: describe is not defined
at Object.<anonymous> (src/app/main/main.controller.spec.js:3:1) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:929:3
我该如何解决这个问题?我很乐意提供任何帮助。
将它添加到您的插件中 'karma-spec-reporter'
然后您应该能够 运行 它 - 我相信它失败了,因为它正在寻找规范报告程序。
除了使用业力转轮。您需要在配置中添加如下内容:
files: [
'bower_components/angular/angular.js',
'bower_components/angular-mocks/angular-mocks.js',
'js/**/*.js',
'../../specs/*.js'
],
具有适当的文件列表。您需要包括所有规范以及您需要为您的应用程序加载的任何文件,例如 angular 和其他库。