Javascript 失败的Jest单元测试
我有一个为其编写测试的组件。它工作得很好,但现在有些地方出了问题,我不知道是什么 这是一个简单的组件,它接受两个数字并返回它们的和:Javascript 失败的Jest单元测试,javascript,reactjs,unit-testing,jestjs,Javascript,Reactjs,Unit Testing,Jestjs,我有一个为其编写测试的组件。它工作得很好,但现在有些地方出了问题,我不知道是什么 这是一个简单的组件,它接受两个数字并返回它们的和: import 'bootstrap/dist/css/bootstrap.css'; import 'bootstrap/dist/css/bootstrap-theme.css'; import React from 'react'; import ReactDOM from 'react-dom'; import { LogOutButton } from '
import 'bootstrap/dist/css/bootstrap.css';
import 'bootstrap/dist/css/bootstrap-theme.css';
import React from 'react';
import ReactDOM from 'react-dom';
import { LogOutButton } from './LogOutButton.js';
class Home extends React.Component {
displayName = Home.name;
state = {
result: 0,
val1: 0,
val2: 0,
};
handleChangeOne = event => {
this.setState({ val1: event.target.value });
};
handleChangeTwo = event => {
this.setState({ val2: event.target.value });
};
add = () => {
this.setState({
result: parseInt(this.state.val1) + parseInt(this.state.val2)
});
};
onLogoutClick = () => {
window.location.href = 'https://www.MICROSOFT.com';
}
render() {
return (
<div>
<h1>Hello world! The result is: {this.state.result}</h1>
<input type="text" onChange={this.handleChangeOne} />
+
<input type="text" onChange={this.handleChangeTwo} />
= <br />
<button onClick={this.add}>Add</button>
<br/><br/>
<LogOutButton onLogout={this.onLogoutClick} />
</div>
);
}
}
export default Home;
这是怎么回事?我尝试了几种方法,但到目前为止没有任何效果。你的应用程序编译正常吗?您是否有针对应用程序和测试的单独babel配置 我认为Jest抱怨使用字段声明语法的行,这是第3阶段的建议 无论如何,
displayName
是类属性IIRC,所以我认为应该使用static
关键字调用它,如下所示:
static displayName = Home.name;
虽然我不知道这条线应该做什么,你能详细说明一下吗 为了让您的测试运行,我必须在
package.json中添加这个:
"enzyme-adapter-react-16": "1.6.0"
在测试中:
import Enzyme, { shallow } from 'enzyme';
import Adapter from "enzyme-adapter-react-16";
Enzyme.configure({ adapter: new Adapter() });
然后考试通过了
请注意,我在CRA 2.1环境中对此进行了测试 您好,您是否尝试将静态关键字添加到displayName属性中?
"enzyme-adapter-react-16": "1.6.0"
import Enzyme, { shallow } from 'enzyme';
import Adapter from "enzyme-adapter-react-16";
Enzyme.configure({ adapter: new Adapter() });