Stub/mock process.platform sinon

Aut*_*ico 7 mocking stub node.js sinon

我正在使用process.platform并希望将该字符串值存根以伪造不同的操作系统.

(这个对象是我无法实现的,我需要测试它可以采用的不同值)

是否可以存根/伪造这个值?

我没试过就试过以下内容:

stub = sinon.stub(process, "platform").returns("something")
Run Code Online (Sandbox Code Playgroud)

我收到了错误 TypeError: Attempted to wrap string property platform as function

如果我尝试使用这样的模拟,会发生同样的事情:

mock = sinon.mock(process);
mock.expects("platform").returns("something");
Run Code Online (Sandbox Code Playgroud)

JME*_*JME 9

你不需要诗乃来完成你需要的东西.虽然这个process.platform过程不是writable,但确实如此configurable.因此,您可以暂时重新定义它,并在完成测试后立即恢复它.

我是这样做的:

var assert = require('assert');

describe('changing process.platform', function() {
  before(function() {
    // save original process.platform
    this.originalPlatform = Object.getOwnPropertyDescriptor(process, 'platform');

    // redefine process.platform
    Object.defineProperty(process, 'platform', {
      value: 'any-platform'
    });
  });

  after(function() {
    // restore original process.platfork
    Object.defineProperty(process, 'platform', this.originalPlatform);
  });

  it('should have any-platform', function() {
    assert.equal(process.platform, 'any-platform');
  });
});
Run Code Online (Sandbox Code Playgroud)