使用Mocha进行单元测试,如何正确的import cc?

CocosCreator3D v1.2.0版本

尝试使用Mocha进行单元测试,没有import cc的代码,单元测试运行很正常。但是尝试测试使用了Vec3这种cc 模块中的代码时,

第一句:
import { Quat, Vec3 } from “cc”;

就会报错:
Error: Cannot find module ‘cc’
Require stack:

  • C:\Code\CocosCode\ProjectA\assets\Scripts\Utils\Math\Transform.ts
  • C:\Code\CocosCode\ProjectA\tests\Utils\Math\Transform.spec.ts
  • C:\Code\CocosCode\ProjectA\node_modules\mocha\lib\esm-utils.js
  • C:\Code\CocosCode\ProjectA\node_modules\mocha\lib\mocha.js
  • C:\Code\CocosCode\ProjectA\node_modules\mocha\lib\cli\one-and-dones.js
  • C:\Code\CocosCode\ProjectA\node_modules\mocha\lib\cli\options.js
  • C:\Code\CocosCode\ProjectA\node_modules\mocha\bin\mocha
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:966:15)
    at Function.Module._resolveFilename (C:\Code\CocosCode\ProjectA\node_modules\tsconfig-paths\lib\register.js:75:40)
    at Function.Module._load (internal/modules/cjs/loader.js:842:27)
    at Module.require (internal/modules/cjs/loader.js:1026:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object. (C:\Code\CocosCode\ProjectA\assets\Scripts\Utils\Math\Transform.ts:1:1)
    at Module._compile (internal/modules/cjs/loader.js:1138:30)
    at Module.m._compile (C:\Code\CocosCode\ProjectA\node_modules\ts-node\src\index.ts:1043:23)
    at Module._extensions…js (internal/modules/cjs/loader.js:1158:10)
    at Object.require.extensions. [as .ts] (C:\Code\CocosCode\ProjectA\node_modules\ts-node\src\index.ts:1046:12)
    at Module.load (internal/modules/cjs/loader.js:986:32)
    at Function.Module._load (internal/modules/cjs/loader.js:879:14)
    at Module.require (internal/modules/cjs/loader.js:1026:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object. (C:\Code\CocosCode\ProjectA\tests\Utils\Math\Transform.spec.ts:4:1)
    at Module._compile (internal/modules/cjs/loader.js:1138:30)
    at Module.m._compile (C:\Code\CocosCode\ProjectA\node_modules\ts-node\src\index.ts:1043:23)
    at Module._extensions…js (internal/modules/cjs/loader.js:1158:10)
    at Object.require.extensions. [as .ts] (C:\Code\CocosCode\ProjectA\node_modules\ts-node\src\index.ts:1046:12)
    at Module.load (internal/modules/cjs/loader.js:986:32)
    at Function.Module._load (internal/modules/cjs/loader.js:879:14)
    at Module.require (internal/modules/cjs/loader.js:1026:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.exports.requireOrImport (C:\Code\CocosCode\ProjectA\node_modules\mocha\lib\esm-utils.js:20:12)
    at Object.exports.loadFilesAsync (C:\Code\CocosCode\ProjectA\node_modules\mocha\lib\esm-utils.js:33:34)
    at singleRun (C:\Code\CocosCode\ProjectA\node_modules\mocha\lib\cli\run-helpers.js:156:3)
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! newproject3d@1.2.0 test: cross-env TS_NODE_PROJECT="tsconfig.test.json" mocha -r ts-node/register -r tsconfig-paths/register tests/**/*.spec.ts
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the newproject3d@1.2.0 test script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above

让我比较困惑的一点是,引擎编译出来的代码,是如何去解析cc这个模块所在的路径呢?是在哪里配置的呢?

1.2 版本可以将 "cc" 指向 <引擎目录>/bin/.cache/dev/index.js,注意,只是 1.2 及以下版本的解决办法。

我试一下,感谢解答:rose: