首页 / 操作系统 / Linux / 如何在 AngularJS 中对控制器进行单元测试
开发者们都一致认为单元测试在开发项目中十分有好处。它们帮助你保证代码的质量,从而确保更稳定的研发,即使需要重构时也更有信心。测试驱动开发流程图AngularJS的代码声称其较高的可测性确实是合理的。单单文档中列出端对端的测试实例就能说明。就像AngularJS这样的项目虽然都说单元测试很简单但真正做好却不容易。即使官方文档中以提供了详尽的实例,但在我的实际应用中却还是很有挑战。这里我就简单示范一下我是怎么操作的吧.
Instant Karma
Karma 是来Angular团队针对JavaScript开发的一个测试运行框架。它很方便的实现了自动执行测试任务从而替代了繁琐的手工操作(好比回归测试集或是加载目标测试的依赖关系)Karma 和Angular的协作就好比花生酱和果冻.只需要在Karma中定义好配置文件启动它,接下来它就会在预期的测试环境下的自动执行测试用例。你可以在配置文件中制定相关的测试环境。angular-seed,是我强烈推荐的可以快速实施的方案。在我近期的项目中Karma 的配置如下:module.exports = function(config) {
config.set({
basePath: "../", files: [
"app/lib/angular/angular.js",
"app/lib/angular/angular-*.js",
"app/js/**/*.js",
"test/lib/recaptcha/recaptcha_ajax.js",
"test/lib/angular/angular-mocks.js",
"test/unit/**/*.js"
], exclude: [
"app/lib/angular/angular-loader.js",
"app/lib/angular/*.min.js",
"app/lib/angular/angular-scenario.js"
], autoWatch: true, frameworks: ["jasmine"], browsers: ["PhantomJS"], plugins: [
"karma-junit-reporter",
"karma-chrome-launcher",
"karma-firefox-launcher",
"karma-jasmine",
"karma-phantomjs-launcher"
], junitReporter: {
outputFile: "test_out/unit.xml",
suite: "unit"
} })
}