【发布时间】:2020-02-09 08:36:48
【问题描述】:
我试图基本上只是更改一个计数器并显示该值已更改。我正在使用getByTestId 执行此操作,这可能是问题所在?
这是我的组件:
import React, { useState } from 'react';
import logo from './logo.svg';
import './App.css';
function App() {
const [count, setCounter] = useState(0)
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
div
<div
onClick={() => setCounter(prevCount => prevCount + 1)}
data-testid="addCount"
>
+
</div>
<div data-testid="count">
{count}
</div>
<div
onClick={() => setCounter(prevCount => prevCount - 1)}
data-testid="minusCount"
>
-
</div>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</header>
</div>
);
}
export default App;
这是我要运行的测试:
describe('State is managed correctly', () => {
const { getByTestId } = render(<App />)
const add = getByTestId(`addCount`)
const count = getByTestId(`count`)
it('count starts at 0', () => {
expect(count).toHaveTextContent("0")
})
it('count added, value should be 1', () => {
fireEvent.click(add)
expect(count).toHaveTextContent("1") // error count is still 0
})
})
【问题讨论】:
-
你不应该在这样的测试中保存状态,你会在脚下开枪。您应该在每次测试运行之前运行
cleanup,重新安装组件,并仅以您希望为该测试更改它的方式操作状态。
标签: reactjs jestjs react-testing-library