gpt4 book ai didi

javascript - Sinon stub 未正确替换 stub 函数

转载 作者:行者123 更新时间:2023-11-30 20:26:44 25 4
gpt4 key购买 nike

我有一个函数依赖于另一个函数,而不是测试依赖性我只想测试该依赖函数的特定结果。但是,当我对函数进行 stub 时,什么也没有发生,返回结果就好像我一开始就没有对函数进行 stub 一样。

示例代码:

// File being tested
function a() {
let str = 'test';
return b(str);
}

function b(str) {
return str + str;
}

module.exports = {
a: a,
b: b
};

// Test file
let test = require('file.to.test.js');

it('should correctly stub the b function', () => {
sinon.stub(test, 'b').returns('asdf');
let result = test.a();

// Expected
assert(result === 'asdf');

// Received
assert(result === 'testtest');
});

最佳答案

您的 stub 没有预期的效果,因为您 stub 了导入对象的属性。但是,function a() 一直调用原始的 function b(),因为它调用的是函数,而不是对象方法。

如果您更改代码,使对象具有属性 ba 以及属性 a,则调用属性 b,那么它将按预期方式工作:

const x = {};
x.a = () => {
let str = 'test';
return x.b(str);
}

x.b = (str) => {
return str + str;
}

module.exports = x;

另外,看看at this answer , 它描述了类似的问题。

关于javascript - Sinon stub 未正确替换 stub 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50823970/

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