Unit testing process.env sinon.stub值给出TypeError:无法将符号值转换为字符串
sinon:^7.5.0 摩卡咖啡:3.4.2 基于此,代码如下所示 存根值(newVal) 为此存根定义一个新值。 sinon.stub(myObj,'example').value('newValue') 我的代码使用了mocha和sinion。我只想存根process.env.NODE\u env的值Unit testing process.env sinon.stub值给出TypeError:无法将符号值转换为字符串,unit-testing,mocha.js,sinon,stubbing,Unit Testing,Mocha.js,Sinon,Stubbing,sinon:^7.5.0 摩卡咖啡:3.4.2 基于此,代码如下所示 存根值(newVal) 为此存根定义一个新值。 sinon.stub(myObj,'example').value('newValue') 我的代码使用了mocha和sinion。我只想存根process.env.NODE\u env的值 sinon.stub(process.env, 'NODE_ENV').value("prod"); 我已经打印了process.env,它有一个键节点_env,指向一个字符串,'dev'
sinon.stub(process.env, 'NODE_ENV').value("prod");
我已经打印了process.env,它有一个键节点_env,指向一个字符串,'dev'
下面是运行摩卡测试时的结果
TypeError: Cannot convert a Symbol value to a string
at module.exports (node_modules/sinon/lib/sinon/util/core/is-es-module.js:16:58)
at stub (node_modules/sinon/lib/sinon/stub.js:28:9)
at Sandbox.stub (node_modules/sinon/lib/sinon/sandbox.js:318:33)
令人困惑的是,这是可行的:
let whatever= { another_key: { onemore: "pure"} };
sinon.stub(whatever.another_key, 'onemore').value("mashed");
我也尝试过使用沙盒(我不知道为什么,因为从v5开始,sinon是沙盒的同义词)
let sandbox = sinon.createSandbox();
describe(....
...
beforeEach(function(){
sandbox.stub(process.env, 'NODE_ENV').value('prod');
});
afterEach(function(){
sandbox.restore();
});
);
同样的错误
我哪里出错了
ps:我知道我可以保存
process.env.NODE\u env
,在测试期间更改它,并将其设置回原位。这是我的后备计划 这里是一个为process.env.NODE_env
创建存根的示例,在创建存根之前,我们需要在process.env
对象上声明NODE_env
属性。否则,它将抛出一个错误:
TypeError:无法存根不存在的自有属性节点\u ENV
index.test.ts
:
从“sinon”导入sinon;
从“chai”导入{expect};
描述(“59214393”,()=>{
它(“应该模拟process.env”,()=>{
process.env.NODE_env=“”;
const stub=sinon.stub(process.env,“NODE_env”).value(“prod”);
expect(process.env.NODE_env.to.be.eq(“prod”);
stub.restore();
});
它(“应该回到原始值”,()=>{
expect(process.env.NODE_env).to.be.eq(“”);
});
});
单元测试结果:
59214393
✓ 应该是mock process.env
✓ 应该回到原来的价值
2次通过(11毫秒)
---------------|----------|----------|----------|----------|-------------------|
文件|%Stmts |%Branch |%Funcs |%Line |未覆盖行|s|
---------------|----------|----------|----------|----------|-------------------|
所有文件| 100 | 100 | 100 | 100 ||
index.test.ts | 100 | 100 | 100 | 100 ||
---------------|----------|----------|----------|----------|-------------------|
源代码: