it
内部に1 つの機能を持つ単純なテスト スイートがあります。呼び出している関数内で特定の関数が呼び出されているかどうかを確認したいので、次のようなものがあります。
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.
いくつか見回した後、すべての例spyOn
に a が含まれていることがわかりましたbeforeEach
。そこで、テストを次のように変更しました。
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();
});
});
そして、これは機能します。私はジャスミンにかなり慣れていないので、明らかな何かが欠けているだけかもしれませんが、なぜそれが機能するために必要なのかを知りたいだけbeforeEach
ですspyOn
。を使用するだけで十分簡単beforeEach
ですが、何が起こっているのかをよりよく理解したいと思います。ありがとう。