【发布时间】:2014-07-15 15:18:29
【问题描述】:
我有一个 AngularJS + RequireJS + Karma + Jasmine 的项目。
我的项目结构如下:
lib
--angular.js
--angular-mocks.js
--require.js
node_modules
--(...)
test
--test-main.js
--spec
--firstTest-spec.js
web
--js
--require_config.js
--controllers
--MainController.js
--modules
--AppModule.js
index.html
karma.conf.js
在我的测试文件中,我有以下代码:
define(['angularMocks', 'modules/AppModule'],
function(angularMocks, AppModule) {
describe("my test suite", function() {
var scope;
beforeEach(module('AppModule'));
it('testing for a controller', inject(function($rootScope, $controller) {
var scope = $rootScope.$new();
var ctrl = $controller('MainController', {
$scope : scope
});
console.log("The test is running ->" + ctrl);
}));
});
});
这样就可以了,因为我使用的是AppModule 依赖项。问题是我只想测试Controller,而Controller 本身是独立的。所以我尝试了这样的事情:
define(['angularMocks', 'controllers/MainController']
但是,如果我尝试像这样访问 Controller,我将无法正常工作。
由于我在其他地方找不到我的问题的答案,我问,我是否必须始终引用我正在测试的 Controller 的 Module,或者我可以在没有 Module 引用的情况下测试我的 Controller ?
【问题讨论】:
标签: angularjs unit-testing requirejs karma-runner karma-jasmine