Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 笑话中的模拟过程方法_Javascript_Node.js_Unit Testing_Electron_Jestjs - Fatal编程技术网

Javascript 笑话中的模拟过程方法

Javascript 笑话中的模拟过程方法,javascript,node.js,unit-testing,electron,jestjs,Javascript,Node.js,Unit Testing,Electron,Jestjs,我有一个electron util.js文件,我想介绍一下测试: const isElectron = "electron" in process.versions; const isUsingAsar = isElectron && process.mainModule && process.mainModule.filename.includes("app.asar"); export const fixPathForAsarUnpack =

我有一个
electron util.js
文件,我想介绍一下测试:

const isElectron = "electron" in process.versions;

const isUsingAsar =
  isElectron &&
  process.mainModule &&
  process.mainModule.filename.includes("app.asar");

export const fixPathForAsarUnpack = path =>
  isUsingAsar ? path.replace("app.asar", "app.asar.unpacked") : path;
为了测试
fixPathForAsarUnpack
方法,我需要从
过程中模拟
版本和
主模块。我试着这样做:

import { fixPathForAsarUnpack } from "../src/electron-util";

test("fixes path for Electron", () => {
  process.versions = {
    electron: "0.0.0",
    mainModule: {
      filename: "/app.asar/index.html"
    }
  };

  const path =
    "/Users/relix/My.app/Contents/Resources/app.asar/node_modules/foo/binary";

  expect(fixPathForAsarUnpack(path)).toBe(
    "/Users/relix/My.app/Contents/Resources/app.asar.unpack/node_modules/foo/binary"
  );
});
但它抛出了一个错误:

  ● fixes path for Electron

    TypeError: Cannot assign to read only property 'versions' of object '[object process]'

      4 |
      5 | test("fixes path for Electron", () => {
    > 6 |   process.versions = {
        |   ^
      7 |     electron: "0.0.0",
      8 |     mainModule: {
      9 |       filename:

      at Object.<anonymous>.test (__test__/electron-util.test.js:6:3)
● 确定电子的路径
TypeError:无法分配给对象“[对象进程]”的只读属性“版本”
4 |
5 |测试(“固定电子路径”,()=>{
>6 | process.versions={
|   ^
7 |电子:“0.0.0”,
8 |主模块:{
9 |文件名:
at Object..test(_test\u_/electron util.test.js:6:3)

我做错了什么,我应该如何模拟
进程
对象?

您应该这样模拟进程:

const originalProcess = process
global.proces = {...originalProcess, version: "your code here"}
// do the test
// ...
// restore the original process object for next tests
global.process = originalProcess

您应该以这种方式模拟流程:

const originalProcess = process
global.proces = {...originalProcess, version: "your code here"}
// do the test
// ...
// restore the original process object for next tests
global.process = originalProcess