组织Angular代码进行测试

时间:2014-07-10 09:53:07

标签: angularjs

所以我有一个不错的角度应用程序。这是我的第一个Ng项目,我希望保持简单,并在开始时将所有内容放在一个文件app.js中。

var app = angular.module('myApp', []);
app.factory( ... );
app.controller( ... );
...
...

正如预期的那样,现在变得难以管理。所以我决定在文件中拆分功能,并使用grunt-concat组合所有文件。这就是我的结构外观 -

.
├── app.js
├── controllers
│   ├── address.js
│   ├── delivery.js
│   ├── editaddress.js
│   ├── login.js
│   └── newaddress.js
├── filters
│   └── filters.js
└── services
    ├── address_service.js
    ├── cartservice.js
    ├── constants.js
    ├── services.js
    └── transformrequest.js

这项工作非常顺利且易于管理。但是,我对如何组织测试感到很茫然。

例如,过滤器早先定义为

angular.module("app.services", [])
.factory('CartService', function() {
})
.factory(...)

这使我能够正确地编写业力测验。现在,过滤器跨文件,并添加 每个angular.module("app.services", [])都会出错 - 我不确定如何跨文件整理代码并使其可测试。

我看了angular-seed,但即使他们只有一个控制器,服务等文件。

所以我的问题是 - 我如何在多个文件中组织我的代码,并且仍然可以在Karma中测试它。

非常感谢!

1 个答案:

答案 0 :(得分:0)

我正在将我的文件与您的文件分开非常相似的目录结构。

我在app.js中定义我的应用程序:

angular.module('myApp', []);

然后在其他文件中,您不必使用“app”实例。您可以这样参考:

angular.module('myApp').factory( ... );
angular.module('myApp').controller( ... );

如果您使用此方法,则不必连接文件,您可以在html或karma测试中逐一包含它们。

我使用我的camra.conf.js:

... files: [ 'lib/angular/angular.js', 'lib/angular-mocks/angular-mocks.js', 'src/app.js', 'src/**/*.js', 'tests/**/*.js' ], ...