rel*_*l1x 2 javascript unit-testing node.js jestjs electron
我有electron-util.js我想用测试覆盖的文件:
const isElectron = "electron" in process.versions;\n\nconst isUsingAsar =\n isElectron &&\n process.mainModule &&\n process.mainModule.filename.includes("app.asar");\n\nexport const fixPathForAsarUnpack = path =>\n isUsingAsar ? path.replace("app.asar", "app.asar.unpacked") : path;\nRun Code Online (Sandbox Code Playgroud)\n\n为了测试fixPathForAsarUnpack方法,我需要模拟versions和mainModulefrom process. 我尝试这样做:
import { fixPathForAsarUnpack } from "../src/electron-util";\n\ntest("fixes path for Electron", () => {\n process.versions = {\n electron: "0.0.0",\n mainModule: {\n filename: "/app.asar/index.html"\n }\n };\n\n const path =\n "/Users/relix/My.app/Contents/Resources/app.asar/node_modules/foo/binary";\n\n expect(fixPathForAsarUnpack(path)).toBe(\n "/Users/relix/My.app/Contents/Resources/app.asar.unpack/node_modules/foo/binary"\n );\n});\nRun Code Online (Sandbox Code Playgroud)\n\n但它会抛出一个错误:
\n\n \xe2\x97\x8f fixes path for Electron\n\n TypeError: Cannot assign to read only property \'versions\' of object \'[object process]\'\n\n 4 |\n 5 | test("fixes path for Electron", () => {\n > 6 | process.versions = {\n | ^\n 7 | electron: "0.0.0",\n 8 | mainModule: {\n 9 | filename:\n\n at Object.<anonymous>.test (__test__/electron-util.test.js:6:3)\nRun Code Online (Sandbox Code Playgroud)\n\n我做错了什么,我应该如何模拟process对象?
您应该以这种方式模拟该过程:
const originalProcess = process
global.process = {...originalProcess, version: "your code here"}
// do the test
// ...
// restore the original process object for next tests
global.process = originalProcess
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
884 次 |
| 最近记录: |