【发布时间】:2019-04-18 17:50:31
【问题描述】:
js 和 react 新手...玩弄测试框架...这里是代码:
import React from 'react';
// import CheckboxWithLabel from '../CheckboxWithLabel';
import {shallow} from 'enzyme'; //not installed...
//var x = require ('../CheckboxWithLabel.js');
test('CheckboxWithLabel changes the text after click', () => {
const checkbox = shallow(
<CheckboxWithLabel labelOn="On" labelOff="Off" />
);
expect(checkbox.text()).toEqual('Off');
checkbox.find('input').simulate('change');
expect(checkbox.text()).toEqual('On');
});
react-scripts 测试错误是: 无法从“checkboxWithLabel-test.js”中找到模块“酶”
虽然开玩笑的错误是:
Jest encountered an unexpected token
SyntaxError: /Users/shriamin/Development/js_prj_react_django_etc/jest_react_demo/my-app/src/__tests__/checkboxWithLabel-test.js: Unexpected token (12:4)
10 | test('CheckboxWithLabel changes the text after click', () => {
11 | const checkbox = shallow(
> 12 | <CheckboxWithLabel labelOn="On" labelOff="Off" />
| ^
13 | );
14 | expect(checkbox.text()).toEqual('Off');
15 | checkbox.find('input').simulate('change');
我不知道为什么 jest 会抛出这个错误……react-scripts 测试对我来说很有意义,因为没有安装酶……请告诉我 jest 是不是很糟糕,或者我在配置 jest 时做错了什么(通过安装npm 并更新 package.json)。
注意:我没有安装 babel...我还不知道那是什么。
谢谢
【问题讨论】:
-
我没有安装 babel - 你不必这样做,这就是 react-scripts (create-react-app) 本身所做的。这可能应该是 checkboxWithLabel-test.jsx 而不是 checkboxWithLabel-test.js
-
此脚本存在多个问题。对我来说,处理它们的顺序似乎并不直观。是的,如何定义 CheckboxWithLabel 存在第二个问题,但是顶部缺少的酶模块似乎具有优先权。我想我只是不明白...
-
Jest 很棒,但配置不正确。该错误意味着 JSX 语法没有被转译。我无法理解这个案子。你是怎么想出像这样的故障设置的? create-react-app 应该使用开箱即用的 react-scripts 生成设置。它已经使用 Jest。如果您尝试在 react-scripts 之外设置 Jest,则不应这样做。
-
有这样做的理由吗? react-scripts 基本上是预配置的设置,这包括预配置的 Jest。
react-scripts test使用特定配置运行jest。当你直接运行jest时,它缺少所需的配置。 -
我认为这是一个教程,并不意味着您已经在使用 CRA。如果它暗示了这一点,我会说那是非常糟糕的教程。