私はそれの中に1つのit
機能を持つ単純なテストスイートを持っています。私は特定の関数は、私が呼んでいる関数内で呼び出されたかどうかを確認したいので、私はこのようなものがあります:beforeEach()でspyOnを呼び出す必要があるのはなぜですか?
describe("doStuff", function() {
var foo = new Foo();
spyOn(foo, "doOtherStuff");
foo.doStuff(true);
it("should do stuff and other stuff", function() {
expect(foo.stuffDone).toBe(true);
expect(foo.doOtherStuff).toHaveBeenCalled();
});
});
しかし、これは私にエラー与える:いくつか見回した後Expected a spy, but got Function.
を、私はすべての例がbeforeEach
のspyOn
を持っているのを見ました。そこで、私はテストを次のように変更しました:
describe("doStuff", function() {
var foo = new Foo();
beforeEach(function() {
spyOn(foo, "doOtherStuff");
foo.doStuff(true);
});
it("should do stuff and other stuff", function() {
expect(foo.stuffDone).toBe(true);
expect(foo.doOtherStuff).toHaveBeenCalled();
});
});
これは機能します。私はジャスミンには新しかったので、明らかに何かが欠落しているかもしれませんが、spyOn
が動作するためにはなぜそれがbeforeEach
になければならないのかを知りたいだけです。 beforeEach
を使用するだけでも簡単ですが、何が起こっているのかをよく理解したいと思います。ありがとう。