Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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
Webpack 如何测试依赖于库的代码?_Webpack_Jestjs - Fatal编程技术网

Webpack 如何测试依赖于库的代码?

Webpack 如何测试依赖于库的代码?,webpack,jestjs,Webpack,Jestjs,我创建了一个库mylib,该库使用以下网页部分编译: output: { ... library: 'mylib', libraryTarget: "var", libraryExport: 'default', }, 因此,它可以包含在脚本标记中并直接使用,例如: <script src="mylib.js"></script> <script> mylib.foo(); // the name mylib is

我创建了一个库
mylib
,该库使用以下网页部分编译:

output: {
    ...
    library: 'mylib',
    libraryTarget: "var",
    libraryExport: 'default',
},
因此,它可以包含在脚本标记中并直接使用,例如:

<script src="mylib.js"></script>
<script>
    mylib.foo();  // the name mylib is available
</script>
并使用
jest
编写单元测试(
/src/\uuuuu tests\uuuu/test point.js
):

当然,
jest
抱怨它不知道什么是
mylib

(dev) go|c:\srv\lib\dkface> jest
 FAIL  src/__tests__/test-point.js
  ● Test suite failed to run

    ReferenceError: mylib is not defined

      1 |
    > 2 | export class Point extends mylib.Widget {
        |                            ^
      3 |     constructor(x, y) {
      4 |         super();
      5 |         this.x = x;

      at Object.mylib (src/point.js:2:28)
      at Object.<anonymous> (src/__tests__/test-point.js:2:1)

Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        4.313s
Ran all test suites.
(dev)go | c:\srv\lib\dkface>jest
未能通过src/_测试\u_/test-point.js
● 测试套件无法运行
ReferenceError:未定义mylib
1 |
>2 |导出类点扩展mylib.Widget{
|                            ^
3 |构造函数(x,y){
4 | super();
5 |这.x=x;
在Object.mylib(src/point.js:2:28)
在对象上。(src/__;tests\u_;/testpoint.js:2:1)
测试套件:1个失败,共1个
测试:共0项
快照:共0个
时间:4.313s
运行所有测试套件。

我对webpack/babel/jest的配置有点不知所措,这只是我第二次使用jest(第一次是在
mylib
上,它工作得很好)。如何使其工作?

由于您希望在您的环境中将
mylib
定义为全局变量,您可以创建一个安装文件并将其添加到jest配置的

package.json
"jest": {
  // ....
  "setupFilesAfterEnv": ['<rootDir>/jest.setup.mylib.js']
}

在测试中定义它

测试点.js
"jest": {
  // ....
  "setupFilesAfterEnv": ['<rootDir>/jest.setup.mylib.js']
}
从“./Point”导入{Point};
以前(()=>{
global.mylib=jest.genMockFromModule('./src/mylib.js');
});

但是如果您添加了
mylib
作为依赖项,并且您有
需要
d它到您的观点中

point.js
"jest": {
  // ....
  "setupFilesAfterEnv": ['<rootDir>/jest.setup.mylib.js']
}
const mylib=require('mylib');
然后,您将能够在测试中自动模拟它

测试点.js
"jest": {
  // ....
  "setupFilesAfterEnv": ['<rootDir>/jest.setup.mylib.js']
}
从“./Point”导入{Point};
开玩笑的模仿(“mylib”);
测试(“测试点”,()=>{
// ....