的假設具有外部控制器的指令的控制器:如何嘲笑的AngularJS指令
.directive('d1', function() {
return {
controller: 'd1controller',
restrict: 'E',
link: function ($scope, $element, $attributes, $controller) {
$controller.doStuff();
}
};
});
如何嘲笑在d1
指令的單元測試的d1controller
控制器?
我嘗試:
我試着用$provide
嘲諷服務時爲:
beforeEach(module('app', function ($provide) {
ctrlMock = jasmine.createSpyObj('ctrlMock', ['doStuff']);
$provide.value('d1controller', ctrlMock);
}));
而且我也試圖與$controllerProvider
beforeEach(module('app', function ($controllerProvider) {
ctrlMock = jasmine.createSpyObj('ctrlMock', ['doStuff']);
$controllerProvider.register('d1controller', ctrlMock);
}));
好戲。我創建了一個'mockDirectiveController'幫手來隱藏實現細節。見https://gist.github.com/sylvain-hamel/9122684 – Sylvain
看到我的新答案。 – Sylvain