用不同的依赖项值测试AngularJS
Testing AngularJS with different dependency values
假设我有一个在运行时配置并在其内部设置某些值的提供程序。提供者有一个暴露的get
方法,所以这些值可以在angular控制器中访问。
在测试控制器时,是否有办法有效地测试不同情况下的提供商的值?
让它正确测试的唯一方法是在每个测试用例中重新定义appController,因为在提供程序中重新定义get方法以返回我想要的东西似乎不工作(这告诉我,当一个控制器被构造时,它通过值而不是通过引用来获取依赖项)。
describe("myController", function(){
"use strict";
describe("AppController", function(){
var appController;
var $rootScope;
var $scope;
var providerMock;
beforeEach(function(){
module('myController');
inject(function(_$controller_, _$rootScope_){
$controller = _$controller_;
$rootScope = _$rootScope_;
$scope = _$rootScope_.$new();
});
});
describe('provider value is a', function(){
beforeEach(function(){
providerMock = { get: function(){ return 'a';}};
appController = $controller('appController', {
$scope: $scope,
provider: providerMock
});
});
it('isA should be true', function(){
expect($scope.isA).toEqual(true);
)};
});
describe('provider value is b', function(){
beforeEach(function(){
providerMock = { get: function(){ return 'b';}};
appController = $controller('appController', {
$scope: $scope,
provider: providerMock
});
});
it('isA should be false', function(){
expect($scope.isA).toEqual(false);
)};
});
});
});
如您所见,在两个描述中重新定义appController
似乎是重复的。还有别的办法吗?同样,假设我有另一个与提供者完全无关的测试用例,例如,如果我正在测试一个函数。我应该把它放在哪个appController实例化分支下?这有关系吗?
$controller
本地依赖有它们的用例,但这是模块mock的作用。
var providerMockedValue;
...
module('myController', { provider: { get: function(){ return providerMockedValue;}} } );
...
providerMockedValue = 'a';
appController = $controller('appController', { $scope: $scope });
相关文章:
- 在Protractor中添加Cookie以测试AngularJS
- TypeError:无法读取属性'那么'在使用Karma测试AngularJS控制器时未定义的
- jasmine 2.0测试angularjs的工厂方法,这是一个承诺
- 单元测试AngularJS控制器,同时遵循最佳实践
- 测试 AngularJS 提供程序
- 您如何在Google富集摘要测试工具中测试AngularJS网络应用程序的 schema.org 元标记
- 单元测试:AngularJS + Karma + Jasmine,加载本地JSON
- 用于测试AngularJS的量角器
- 用Jasmine测试AngularJS控制器
- 如何使用Jasmine测试AngularJS承诺返回的内容
- 使用量角器测试Angularjs警报
- 用Karma测试angularjs的工厂
- 单元测试angularjs$q.all-承诺永远不会完成
- 在可安装轨道的发动机内测试AngularJS
- 如何测试AngularJS$asyncValidators,包括$http调用
- 如何用angularjse2e测试angularjs应用程序,该应用程序具有相同ng模型的多个输入
- 如何正确测试AngularJS控制器功能
- 如何用Jasmine测试AngularJS控制器在Promise中返回的值
- 测试AngularJS指令的惯用方法是什么?
- CSS使用Karma+Jasmine发布测试AngularJS指令