process.env sinon.stub值给出TypeError:无法将Symbol值转换为字符串

问题描述 投票:0回答:1

sinon:^ 7.5.0mocha:3.4.2

基于此documentation的代码如下

stub.value(newVal)为此存根定义一个新值。sinon.stub(myObj,'example')。value('newValue');

使用mochasinion的代码。我只想存根process.env.NODE_ENV的值。

sinon.stub(process.env, 'NODE_ENV').value("prod");

我已经打印了[[proccess.env,并且它有一个指向字符串'dev'key NODE_ENV

这是进行摩卡测试的结果。

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_ENV,在测试过程中进行更改,然后重新设置。那是我的后备计划。

unit-testing mocha sinon stubbing
1个回答
0
投票
这里是为process.env.NODE_ENV制作存根的示例,在制作存根之前,我们需要在NODE_ENV对象上声明process.env属性。否则,将引发错误:

TypeError:无法存根不存在的自己的属性NODE_ENV

index.test.ts

import sinon from "sinon"; import { expect } from "chai"; describe("59214393", () => { it("should mock 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(); }); it("should back to original value", () => { expect(process.env.NODE_ENV).to.be.eq(""); }); });

单元测试结果:

59214393 ✓ should mock process.env ✓ should back to original value 2 passing (11ms) ---------------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ---------------|----------|----------|----------|----------|-------------------| All files | 100 | 100 | 100 | 100 | | index.test.ts | 100 | 100 | 100 | 100 | | ---------------|----------|----------|----------|----------|-------------------|

源代码:https://github.com/mrdulin/mocha-chai-sinon-codelab/tree/master/src/stackoverflow/59214393
© www.soinside.com 2019 - 2024. All rights reserved.