我想知道“ spyOn”函数在内部如何工作。我读到'spyOn'函数在内部替换了所侦探函数的实现。它保留了旧功能吗?
作为一个示例,假设我想监视将数据发送到服务器的对象。
describe("A spy", function() {
var object;
spyOn(object, 'sendDataToServer');
object.sendDataToServer('Some Message');
});
在这种情况下,消息是否仍然发送到服务器还是间谍对其进行了模拟?
答案 0 :(得分:1)
该消息未发送到服务器。定义间谍的方式将在测试用例的上下文中调用sendDataToServer
函数。
您可以指定一个更精细的间谍,例如,当您想调用另一个函数时:
let mySpy = spyOn(object, 'sendDataToServer').and.callFake((message: string) => {
console.log('I have been called with ' + message);
});
object.sendDataToServer('Some Message'); // -> will call the function defined above and log the message passed
或者如果您想调用实际函数:
let mySpy = spyOn(object, 'sendDataToServer').and.callThrough();
object.sendDataToServer('Some Message'); // -> will call the actual function on object