自己インスタンス化関数を持つ角度コントローラがテストのために実行されないようにするにはどうすればよいですか?
(私の問題を説明するために不自然な例を使用しました)
起動時にコードを実行するコントローラーがあります(私の場合はajax)
var app = angular.module('app', []);
app.controller('myCtrl', function () {
this.doSomething = function () {
console.log('nahh');
};
this.doSomething();
});
コントローラーのテストを作成しようとしています。doSomethingを実行したくありません。
var ctrl = $controller('myCtrl',
{
$scope: {}
});
// ctrl.doSomething has already run!
expect(something).to.be(true);
backbone.js を使用する場合、次のようにします。
MyCtrl.prototype.doSomething = function(){};
myCtrl = new MyCtrl();
実行を防ぐために、初期化の前にプロトタイプを変更します。$controller は、コントローラーのインスタンスを提供するようです。プロトタイプを入手できると便利です。私が気付いていないこれを克服する他の方法があるかもしれません!