Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.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 如何在使用Jest对React组件进行单元测试时模拟子组件_Javascript_Unit Testing_Reactjs_Jestjs - Fatal编程技术网

Javascript 如何在使用Jest对React组件进行单元测试时模拟子组件

Javascript 如何在使用Jest对React组件进行单元测试时模拟子组件,javascript,unit-testing,reactjs,jestjs,Javascript,Unit Testing,Reactjs,Jestjs,我有一个React组件,我正在尝试编写一些测试。我已经把它分解成尽可能简单的测试 jest.dontMock('../Overlay.react.js'); import React from 'react'; import ReactDOM from 'react-dom'; var Overlay = require('../Overlay.react.js'); // this is the culprit! describe('Overlay', () => { it

我有一个React组件,我正在尝试编写一些测试。我已经把它分解成尽可能简单的测试

jest.dontMock('../Overlay.react.js');

import React from 'react';
import ReactDOM from 'react-dom';

var Overlay = require('../Overlay.react.js'); // this is the culprit!

describe('Overlay', () => {
    it('should work', () => {
        expect(true).toEqual(true);
    });
});
当需要我尝试测试的组件时,它似乎没有模仿它的子组件。在
Overlay.react.js
的顶部,我有以下导入:
从“loadingIndicator/LoadingIndicatorSpin.react”导入LoadingSpinner运行测试时,出现以下错误:

  • 语法错误:/Users/dev/work/react-prototype/src/components/root/routes/components/subset1/components/Overlay.react.js: /Users/dev/work/react prototype/src/components/root/routes/components/loadingIndicator/LoadingIndicatorSpin.react.js: /用户/dev/work/react-prototype/src/components/root/routes/components/loadingIndicator/sass/style.sass: 意外令牌非法
它似乎不是模拟组件,而是直接进入子组件的sass文件并抛出一个fit。我的理解是,玩笑会嘲弄一切,除了你告诉它不要嘲弄的东西


制定这些测试的正确方法是什么,这样子组件在测试期间导入时不会导致jest爆炸?

如果您需要在主组件中而不是在每个子组件中使用SASS和LESS以及CSS文件,则在单独测试组件时不会遇到此问题


如果您不喜欢我提供的解决方案,本问题报告中还提到了其他一些解决方案

有点固执己见,但我只是在为你着想。您将使用jest获得许多此类错误,此外,当您开始测试任何非琐碎的内容时,您将遇到性能问题。看一看开放式的笑话,评估使用摩卡或茉莉花是否是测试框架的更好选择。否则,看一看问题以获得更多指导。@mattclemens有趣。我只真正了解过如何使用jest测试react组件,所以这是默认设置。我会读一点。。。您链接到的问题更多的是将子组件传递给您尝试测试的组件,而不是导入它们。哎呀,我不适合向您提出一个不相关的问题,我想我特别是在子组件方面学到了这个问题。除了开玩笑之外,您还用什么来运行测试?您使用的是像巴贝尔这样的运输工具吗?以及(如何)从JS引用sass文件?在主组件中要求避免在较低级别的组件中导入它们,但是您不能遵循将组件的.JS文件与其样式分组的模式。我将
if(filename.match(/.sass/)| | filename.match(/.less/)| | filename.match(/.css/){return“”;}
添加到我的预处理器中,它克服了sass错误,但在为单个组件运行测试(而不是模拟它们)时,它似乎在拉入每个存储和操作。杰斯特的呼吁是自嘲,似乎很奇怪……那么很抱歉我帮不了你。你检查过问题了吗?