gpt4 book ai didi

javascript - 为什么在 sinon js 中使用析构函数时 stub 函数不起作用?

转载 作者:行者123 更新时间:2023-12-01 00:56:08 25 4
gpt4 key购买 nike

有很多人面临这样的问题:在使用析构函数时,sinon.js 的 stub 函数不起作用,并且 Sinon stub function used with destructuring 上提到了一个很好的解释。 。正如答案中提到的,当使用析构函数时,我们始终调用原始函数:

const stub = (o, method) => (o[method] = () => "I am a stub");

const obj = {
methodFoo() {
return "I am foo";
}
};

// same as doing `const methodFoo = obj.methodFoo;`
const { methodFoo } = obj; // "import" using destructuring

console.log("obj.methodFoo(): ", obj.methodFoo());
console.log("methodFoo()", methodFoo());

console.log("Stubbing out method!");
stub(obj, "methodFoo");

console.log("obj.methodFoo: ", obj.methodFoo());
console.log("methodFoo()", methodFoo());

我搜索了为什么析构函数覆盖 stub 或者它在幕后如何工作以了解如何操作数据的答案,但我没有得到任何解决方案。有没有关于这个问题的详细信息?

最佳答案

stub 会覆盖方法属性。如果你举这个人为的例子:

 const obj = { prop: "value" };

const prop = obj.prop; // or { prop } = obj;

obj.prop = "new value"; // stub()

console.log(prop); // "value"

那么事情可能会变得更清楚。将方法视为可以复制的值(实际上是复制对它们的引用)。

关于javascript - 为什么在 sinon js 中使用析构函数时 stub 函数不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56571064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com