Javascript 如何在使用Jest对React组件进行单元测试时模拟子组件
我有一个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
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错误,但在为单个组件运行测试(而不是模拟它们)时,它似乎在拉入每个存储和操作。杰斯特的呼吁是自嘲,似乎很奇怪……那么很抱歉我帮不了你。你检查过问题了吗?