gpt4 book ai didi

testing - Sinon stub withArgs 忽略额外参数

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

我的生产代码如下所示:

exports.convertWord = number => { /* some logic here */ }
exports.methodUnderTest = () => {
return exports.convertWord(1);
}

测试代码:

const mockConvertToWord = sinon.stub();
mockConvertToWord.withArgs(1).returns('one');
fileUnderTest.convertWord = mockConvertToWord;

const result = fileUnderTest.methodUnderTest();

expect(result).toBeEqual('one');

上面的测试是绿色的。如果我将产品代码更改为此,我希望我的测试会中断:

exports.convertWord = number => { /* some logic here */ }
exports.methodUnderTest = () => {
return exports.convertWord(1, 'another arg');
}

但事实并非如此。即使我传递了我没有在 withArgs 方法中指出的额外参数,Sinon 也能正常工作。我如何才能告诉 sinon 只有在使用确切数量的参数调用方法时才返回值?

最佳答案

stub

一种方法是使用 stub.callsFake(fakeFunction) :

mockConvertToWord.callsFake((...args) => args.length === 1 && args[0] === 1 ? 'one' : undefined);

stub 的另一种方法是使用 sinon.assert 来确保 stub 被调用时带有指定的预期参数来自@deerawan。


模拟

另一种方法是使用mock:

const mock = sinon.mock(fileUnderTest);
mock.expects('convertWord').withExactArgs(1).returns("one");

const result = fileUnderTest.methodUnderTest();

expect(result).toBeEqual('one');
mock.verify();

关于testing - Sinon stub withArgs 忽略额外参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52629446/

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