如何使用茉莉花规格模拟process.platform?
答案 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 强>