Javascript 理解Sinon间谍:调用间谍包装的方法时会发生什么?
当我将类的方法包装到Sinon spy中时,如下所示:Javascript 理解Sinon间谍:调用间谍包装的方法时会发生什么?,javascript,unit-testing,sinon,Javascript,Unit Testing,Sinon,当我将类的方法包装到Sinon spy中时,如下所示: sinon.spy(myObject, "myMethod") 间谍内部发生了什么 我猜spy对象有一个指向“myObject.myMethod”的引用 当方法变为调用时会发生什么? 我知道spy会记录有关调用的信息,如调用次数、使用的参数等 但是myMethod真的被调用了吗 我的意思是:进一步传递间谍对象调用spy对象是否充当代理?还是只记录信息?通过一个简单的测试,似乎sinon spy调用了原始方法: it('does a thi
sinon.spy(myObject, "myMethod")
间谍内部发生了什么
我猜spy对象有一个指向“myObject.myMethod”的引用
当方法变为调用时会发生什么?
我知道spy会记录有关调用的信息,如调用次数、使用的参数等
但是myMethod真的被调用了吗
我的意思是:进一步传递间谍对象调用spy对象是否充当代理?还是只记录信息?通过一个简单的测试,似乎sinon spy调用了原始方法:
it('does a thing', function() {
const el = {};
el.thing = function() { console.log('thing'); }
sinon.spy(el, 'thing');
el.thing();
console.log(el.thing.called);
});
// prints:
// thing
// true
它似乎也来自:
spy(object,“method”)创建一个封装现有函数object.method的spyspy的行为与原始方法完全相同(包括用作构造函数时),但您可以访问有关所有调用的数据
从一个简单的测试来看,sinon spy似乎调用了原始方法:
it('does a thing', function() {
const el = {};
el.thing = function() { console.log('thing'); }
sinon.spy(el, 'thing');
el.thing();
console.log(el.thing.called);
});
// prints:
// thing
// true
它似乎也来自:
spy(object,“method”)创建一个封装现有函数object.method的spyspy的行为与原始方法完全相同(包括用作构造函数时),但您可以访问有关所有调用的数据
令人惊叹的。因此,它实际上就像一个代理。为什么我自己没有这个简单的想法呢无论如何:非常感谢。太棒了。因此,它实际上就像一个代理。为什么我自己没有这个简单的想法呢无论如何:非常感谢。