私はこのように私の角工場を持っている:(this.functionを呼び出すの差)と機能()アンギュラ工場で
angular
.module('app.myModule')
.factory('myFactory', myFactory);
myFactory.$inject = [];
function myFactory() {
var factory = {
func1: func1,
func2: func2
};
return factory;
//////////
function func1() {
if (/* some condition */) {
return true;
} else {
return false;
}
};
function func2() {
if (func1()) {
// do something
} else {
// do something else
}
};
};
func2()
はfunc1
を呼び出した結果に応じて、何かをしますが、func1()
ではありませんそれを私に公開するのは面白いので私的な機能です。
私はこの工場の単体テストをコード化するまでは何も問題ありませんでした。 func2()
をテストするときは、いつでもを返信してtrue
/false
と返信したいと思います。
は、これまでのところ私は、テストコード化:
describe('Test func2 if func1 returns false', function() {
beforeEach(function() {
// func1 stub setup
sinon.stub(myFactory, 'func1');
myFactory.func1.returns(false);
// HERE myFactory.func1() RETURNS 'false'
});
it('should do something else', function (done) {
// HERE func1() CALLED INSIDE myFactory.func2() IS NOT THE STUB
myFactory.func2();
// Do some assertions, etc.
});
});
を私は気づいた私はthis.func1()
を呼び出す代わりに、このようなfunc1()
によってmyFactoryのfunc2()
コードの小さな変化をした場合:それから
function func2() {
if (this.func1()) {
// do something
} else {
// do something else
}
};
スタブされたfunc1()
関数が常にテストで呼び出されます。
この時点で私はちょうど混乱しています。誰がここで何が起こっているかも知っていますか?同じ工場に属している場合は、私の角の工場内の他の公共の方法/機能をthis.
と呼ぶ方がより正確でしょうか?
UPDATE
this.func1()
またはfactory.func1()
仕事の両方。
これはAngularJS質問より一般的です。このカップルの動画をご覧ください:https://www.youtube.com/playlist?list=PLoYCgNOIyGABI011EYc-avPOsk1YsMUe_ – tomepejo