【发布时间】:2020-12-11 11:24:45
【问题描述】:
我尝试使用 Jest 测试 TextField 组件
text-field.test.js
import React from "react";
import { render, screen } from "@testing-library/react";
import TextField from '../text-field'
import "@testing-library/jest-dom";
test('TextField', () => {
render(<TextField name="Name" />)
screen.debug()
})
text-field.js
import React from "react";
import {
FormControl,
InputLabel,
Input,
FormHelperText,
} from "@material-ui/core";
import { css } from "@emotion/core";
import PropTypes from "prop-types";
const TextField = ({ name, helperText, error, value, onChange }) => {
return (
<FormControl error={error}>
<InputLabel
css={css`
text-transform: capitalize;
`}
htmlFor={name}
>
{"Name"}
</InputLabel>
<Input id={name} value={value} onChange={onChange} />
<FormHelperText id={`${name}-helper-text`}>{helperText}</FormHelperText>
</FormControl>
);
};
TextField.propTypes = {
name: PropTypes.string.isRequired,
};
export default TextField;
这是我的 babel 配置。在运行 Jest 之前,我将 @emotion/babel-preset-css-prop 包含在 babel 中。
babel.config.js
// babel.config.js
module.exports = {
presets: ["@emotion/babel-preset-css-prop", "@babel/preset-env"],
};
我尝试运行yarn test,但失败并出现以下错误。
import { jsx as ___EmotionJSX } from "@emotion/core";
^^^^^^
SyntaxError: Cannot use import statement outside a module
at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:537:17)
at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:579:25)
有什么想法吗?
【问题讨论】:
标签: javascript reactjs jestjs create-react-app emotion