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

Kyl*_*ley 7 mocking node.js jasmine

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

jad*_*nda 22

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

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

{ value: 'darwin',
  writable: false,
  enumerable: true,
  configurable: true }
Run Code Online (Sandbox Code Playgroud)

如您所见,值process.platform不可写(有关更多信息,请参阅文档),因此您无法使用赋值运算符进行设置.但你可以用它来覆盖它Object.defineProperty.

茉莉花的例子

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
       });
    });
});
Run Code Online (Sandbox Code Playgroud)

Object.defineProperty()文档