0
私は実行時に構成され、特定の値を内部に設定するプロバイダーがあります。プロバイダにはget
メソッドが公開されているため、これらの値は角度コントローラ内でアクセスできます。異なる依存性値を持つAngularJSをテストする
コントローラをテストするときに、プロバイダの価値の異なるケースを効率的にテストする方法はありますか?
正しくテストするための唯一の方法は、テストケースごとにappControllerを再定義し、プロバイダのgetメソッドを再定義して、動作していないと思われるものを返すことです(これは、コントローラそれは参照によってではなく、値によって依存関係を取ります)。 2が記述するにappController
を再定義
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インスタンス化ブランチに配置すればいいですか?それは問題ですか?