双方向バインドプロパティ(=)を持つディレクティブをユニットテストしようとしています。このディレクティブは私のアプリケーションで動作しますが、双方向バインディングをテストするユニットテストを行うことはできません。angularjs directive unit testがcontrollerAsで失敗しましたbindToController&isolateScope()
私は数日間この作業をしようとしています。私は使用したい機能のすべてではなく、いくつかを使用する多くの例を読んでいます:controllerAs、bindToController & isolateScope()。私が必要とするtemplateURLについては忘れてしまいました。私がこの作業をすることができればそれを追加します:)
私は、隔離スコープに反映された親スコープに変更を表示する方法を教えてくれることを願っています。ここで
は、以下のコードが含まれていplunkrである:ここでは
http://plnkr.co/edit/JQl9fB5kTt1CPtZymwhI
は私のテストのアプリです:
var app = angular.module('myApp', []);
angular.module('myApp').controller('greetingController', greetingController);
greetingController.$inject = ['$scope'];
function greetingController($scope) {
// this controller intentionally left blank (for testing purposes)
}
angular.module('myApp').directive('greetingDirective',
function() {
return {
scope: {testprop: '='},
restrict: 'E',
template: '<div>Greetings!</div>',
controller: 'greetingController',
controllerAs: 'greetingController',
bindToController: true
};
}
);
そして、ここでは、仕様です:
describe('greetingController', function() {
var ctrl, scope, rootScope, controller, data, template,
compile, isolatedScope, element;
beforeEach(module('myApp'));
beforeEach(inject(function ($injector) {
rootScope = $injector.get('$rootScope');
scope = rootScope.$new();
controller = $injector.get('$controller');
compile = $injector.get('$compile');
data = {
testprop: 1
};
ctrl = controller('greetingController', {$scope: scope}, data);
element = angular.element('<greeting-directive testprop="testprop"></greeting-directive>');
template = compile(element)(scope);
scope.$digest();
isolatedScope = element.isolateScope();
}));
// PASSES
it('testprop inital value should be 1', function() {
expect(ctrl.testprop).toBe(1);
});
// FAILS: why doesn't changing this isolateScope value
// also change the controller value for this two-way bound property?
it('testprop changed value should be 2', function() {
isolatedScope.testprop = 2;
expect(ctrl.testprop).toBe(2);
});
});
感謝内
isolatedScope.greetingController.testprop
を検証しますscope
内のコントローラの別名を持つプロパティを追加しますあなたの優しさと専門知識のためにあなたはとてもそうです。これは私にとって非常に役に立ちます。ありがとうございました!すべてのレベルで繁栄と豊かさに恵まれていますか? – DanBKC@DanBKCねえ、祝福のおかげで、何年も前から私は他の人を助けています。しかし、あなたはそのような良いコメントをくれた人です、ありがと;)それは私がより多くの貢献をすることを奨励:) –