你如何在茉莉花测试中模拟process.platform?

时间:2015-05-22 20:29:22

标签: node.js mocking jasmine

如何使用茉莉花规格模拟process.platform?

1 个答案:

答案 0 :(得分:19)

您可以使用Object.defineProperty()process.platform中设置beforeAll的值,然后在测试完成后将其重置为afterAll中的原始值。

如果您在node.js控制台中打印Object.getOwnPropertyDescriptor(process, "platform")以获取descriptor platform.process配置,那么您将获得以下信息:

{ value: 'darwin',
  writable: false,
  enumerable: true,
  configurable: true }

如您所见,process.platform的值不可写(有关详情,请参阅docs),因此您无法使用赋值运算符对其进行设置。但您可以使用Object.defineProperty覆盖它。

Jasmine示例

describe('test process platform', function(){
    beforeAll(function(){
       this.originalPlatform = process.platform;
       Object.defineProperty(process, 'platform', {  
         value: 'MockOS'
       });
    });

    it(/*test*/);

    ....

    it(/*test*/);

    afterAll(function(){
       Object.defineProperty(process, 'platform', {  
         value: this.originalPlatform
       });
    });
});

<强> Object.defineProperty() Docs