Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 理解Sinon间谍:调用间谍包装的方法时会发生什么?_Javascript_Unit Testing_Sinon - Fatal编程技术网

Javascript 理解Sinon间谍:调用间谍包装的方法时会发生什么?

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中时,如下所示:

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的行为与原始方法完全相同(包括用作构造函数时),但您可以访问有关所有调用的数据


令人惊叹的。因此,它实际上就像一个代理。为什么我自己没有这个简单的想法呢无论如何:非常感谢。太棒了。因此,它实际上就像一个代理。为什么我自己没有这个简单的想法呢无论如何:非常感谢。