gpt4 book ai didi

javascript - 如何使用 sinon stub 非对象函数

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

我有一个非对象函数

在 getConfig.js 上

export default function () {
/** do something **/
return {
appConfig: { status: true }
}
}

在我的主文件下

import getConfig from './getConfig';

export default function() {
const { appConfig } = getConfig();

if(appConfig.status) {
console.log("do the right thing");
else {
console.log("do other things")
}
}
}

如何使用 sinon stub 或模拟方法模拟 getConfig 函数?或者有没有更好的方法来设置 appConfig.status 属性为 true 或 false?

我想做以下但它不起作用

import getConfig from './getConfig';
import main from './main';

test('should status to be true', () => {

sinon.stub(getConfig).callsFake(sinon.fake.returns({status:true});
expect(main()).toBe('to do the right thing')
}

最佳答案

getConfig 函数只返回一个对象,因此您应该只检查返回值(对象)。您根本不需要 sinon。您需要做的是声明返回值。您可以使用 mocha用于运行测试的测试运行器和断言工具,如用于断言的节点内部 assert 模块。

“有没有更好的方法来设置 appConfig.status 属性为 true 或 false?”给函数添加一个参数怎么样?

// using default values for properties
export default function(status = true) {
// no need for additional `appConfig` property
return { status };
}

测试(环境设置见mocha手册):

import getConfig from './getConfig';
import assert from 'assert';

describe('getConfig', function() {
it('should return { status: true } by default', function() {
const ret = getConfig();
assert.deepEqual(ret, { status: true });
});
it('should return { status: false } by passing `false`', function() {
const ret = getConfig(false);
assert.deepEqual(ret, { status: false });
});
});

关于javascript - 如何使用 sinon stub 非对象函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58723080/

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