У меня есть простой набор тестов, в котором есть одна функция it
. Я хочу увидеть, вызвана ли какая-то функция внутри функции, которую я вызываю, поэтому у меня есть что-то вроде этого:
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
в 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
, но я хочу лучше понять, что происходит. Спасибо.