Mam prosty zestaw testów, który ma jedną funkcję it
w środku. Chcę zobaczyć, czy dana funkcja jest wywoływana wewnątrz funkcji Dzwonię, więc mam coś takiego:Dlaczego muszę wywoływać spyOn w beforeEach()?
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();
});
});
Jednak to daje mi błąd: Expected a spy, but got Function.
Po rozglądając niektórych, Widziałem wszystkie przykłady miały spyOn
w beforeEach
. Zmieniłem test na:
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();
});
});
To działa. Jestem całkiem nowym jaśminem, więc może po prostu brakuje mi czegoś oczywistego, ale chcę tylko wiedzieć, dlaczego musi to być beforeEach
, aby zadziałało spyOn
. Łatwo jest po prostu użyć beforeEach
, ale chcę lepiej zrozumieć, co się dzieje. Dzięki.