Tôi có một bộ thử nghiệm đơn giản có một hàm it
bên trong nó. Tôi muốn nhìn thấy nếu một chức năng nhất định được gọi là trong phạm vi chức năng tôi đang gọi điện thoại, vì vậy tôi có một cái gì đó như thế này:Tại sao tôi phải gọi spyOn trong 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();
});
});
Tuy nhiên, điều này mang lại cho tôi những lỗi: Expected a spy, but got Function.
Sau khi nhìn xung quanh một số người, Tôi đã xem tất cả các ví dụ có số spyOn
trong một số beforeEach
. Vì vậy, tôi đã thay đổi thử nghiệm của mình thành:
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();
});
});
Và tính năng này hoạt động. Tôi khá mới với hoa nhài, vì vậy tôi chỉ có thể thiếu một cái gì đó hiển nhiên, nhưng tôi chỉ muốn biết tại sao nó phải ở trong một beforeEach
cho spyOn
để làm việc. Thật dễ dàng để chỉ sử dụng beforeEach
, nhưng tôi muốn hiểu rõ hơn những gì đang diễn ra. Cảm ơn.