我怎样才能测试另一个函数内的函数是否被调用?我无法更改源代码,因此我需要按原样进行测试。
我该怎么做?这是我的代码:
function B(){ console.log('function b'); }
function A(){
B();
}
茉莉花测试:
it('should check function B in function A was called', function () {
spyOn(window, 'B');
A();
expect(B).toHaveBeenCalled();
});
答案 0 :(得分:0)
间谍
Jasmine有一个称为间谍的测试双重功能。间谍可以存根 函数和跟踪对它的调用和所有参数。间谍只存在 在描述或它定义的块中,将是 每个规格后删除。有特殊的相互作用匹配器 与间谍。 Jasmine 2.0的语法已更改。该 如果调用间谍,toHaveBeenCalled匹配器将返回true。该 toHaveBeenCalledWith匹配器将返回true参数列表 匹配任何记录的间谍呼叫。
describe("A spy", function() {
var foo, bar = null;
beforeEach(function() {
foo = {
setBar: function(value) {
bar = value;
}
};
spyOn(foo, 'setBar');
foo.setBar(123);
foo.setBar(456, 'another param');
});
it("tracks that the spy was called", function() {
expect(foo.setBar).toHaveBeenCalled();
});
it("tracks all the arguments of its calls", function() {
expect(foo.setBar).toHaveBeenCalledWith(123);
expect(foo.setBar).toHaveBeenCalledWith(456, 'another param');
});
it("stops all execution on a function", function() {
expect(bar).toBeNull();
});
});