单元测试AngularJS控制器,同时遵循最佳实践
Unit testing AngularJS Controller whilst following best practice
我们正在按照此处概述的一些最佳实践指南构建一个 AngularJS 应用程序。
我对测试一个非常简单的控制器特别感兴趣,以启动和运行业力。
控制器代码为:
angular.module('ttn').controller('Login', Login);
function Login(){
var login = this;
login.title = 'foo bar content here etc';
}
规格代码是:
describe('Controller: Login', function () {
beforeEach(module('ttn'));
var scope, controller;
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
controller = $controller('Login', {
$scope: scope
});
scope.$digest();
}));
it('should define a title', function () {
expect(scope.title).toBeDefined();
});
});
这将失败,期望定义未定义。
如果我将控制器更改为:
angular.module('ttn').controller('Login', Login);
function Login($scope){
$scope.title = 'foo bar whatsit jibber';
}
然后,测试按预期通过。 我不确定如何引用以上述链接中概述的方式编写的控制器以使测试通过。
由于控制器不使用$scope,因此不应在测试中注入和使用它。相反,您应该检查控制器上的标题:
describe('Controller: Login', function () {
beforeEach(module('ttn'));
var controller;
beforeEach(inject(function ($controller) {
controller = $controller('Login', {});
}));
it('should define a title', function () {
expect(controller.title).toBeDefined();
});
});
普伦克
相关文章:
- Angularjs 1.5.x本地化最佳实践
- 在AngularJS中使用多个主题的最佳方式是什么
- AngularJs 检查是否未定义和空的最佳实践
- AngularJS:使用指令的最佳方式
- 限制与AngularJS状态匹配的动态URL参数的最佳方式
- AngularJS-从Angular外部触发摘要的最佳方法
- 将变量传递给AngularJS控制器,最佳实践
- angularjs性能最佳实践
- 使用AngularJS应用程序为移动设备(iOS、Android等)构建本地应用程序的最佳方式
- AngularJS:以编程方式将ngif添加到指令中的最佳实践是什么?
- angularjs设计模式和从服务器获取数据的最佳实践
- AngularJS中使用ajax获取数据的最佳方式是什么
- 使用AngularJS进行逻辑分离的最佳方式是什么
- AngularJS组件和cms驱动应用程序的最佳实践
- 将JSON从PHP控制器传递到AngularJS控制器的最佳方式
- 最佳实践:在 AngularJS 中将一个模板包装在另一个模板中
- 单元测试AngularJS控制器,同时遵循最佳实践
- 分离AngularJs控制器代码的最佳方法
- 使用 Angularjs 加载 JavaScript 脚本的最佳方法是什么?
- 在 AngularJS 中与后端服务通信的最佳方法是什么?