簡體   English   中英

在sinon js中使用析構函數時,為什么存根函數不起作用?

[英]why the stubbed functions does not works when using destructor with sinon js?

有很多人面臨使用sinon.js進行存根函數存根的問題,在使用destructor函數時不起作用,並且提到將Sinon存根函數與析構函數一起使用時存在大量錯誤 就像答案中提到的那樣,當使用析構函數時,我們總是調用原始函數:

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());

我搜索了一個答案,為什么destructor會覆蓋stub或者它在stub如何工作以了解如何處理數據,但我沒有任何解決方案。 關於這個問題有什么細節嗎?

存根將覆蓋methods屬性。 如果您使用這個人為的示例:

 const obj = { prop: "value" };

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

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

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

那么它可能會變得更加清晰。 將方法視為可以復制的值(實際上是復制了對它們的引用)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM