【发布时间】:2012-11-20 19:00:30
【问题描述】:
我有一个简单的测试套件,里面有一个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.
环顾四周后,我看到所有示例在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();
});
});
这很有效。我对茉莉花很陌生,所以我可能只是遗漏了一些明显的东西,但我只想知道为什么它必须在beforeEach 中才能使spyOn 工作。使用beforeEach 很容易,但我想更好地了解发生了什么。谢谢。
【问题讨论】:
标签: javascript unit-testing jasmine