【发布时间】:2019-10-10 15:35:58
【问题描述】:
我正在使用 Enzyme 测试 Create-React-App 中的状态。我怎样才能通过这个测试?
当我的 App 组件在我的测试中呈现时,它被包裹在
<BrowserRouter>
(尝试挂载它会产生一个
Invariant failed: You should not use <Route> outside a <Router>
测试中的错误)。
浅包装产量
TypeError: Cannot read property 'state' of null
就像安装和包装一样
<BrowserRouter>.
我试过this
结果:未回答的问题
结果:未回答的问题
结果:卸载 react-test-renderer 没有任何影响
和this
结果:我检查了组件中的状态并定义了它。 console.log(wrapper.instance().state) 产生相同的错误:'null'
App.js:
class App extends Component {
//#region Constructor
constructor(props) {
super(props);
this.state = {
//... other correctly formatted state variables
specificRankingOptionBtns: false
}
app.test.js:
import React from 'react'
import { BrowserRouter } from 'react-router-dom'
import App from '../../App'
import renderer from 'react-test-renderer'
import { shallow, mount } from 'enzyme';
describe('App', () => {
fit('renders App.js state correctly', () => {
const wrapper = mount(<BrowserRouter><App /></BrowserRouter>);
//console.log(wrapper.instance().state);
//const wrapper = shallow(<App />);
//const wrapper = mount(<App />);
console.log(wrapper.instance().state);
//const wrapper = mount(shallow(<BrowserRouter><App />
//</BrowserRouter>).get(0));
expect(wrapper.state('specificRankingOptionBtns')).toEqual(false);
});
}
期望:测试通过
实际:“TypeError: ReactWrapper::state("specificRankingOptionBtns") 要求state 不是null 或undefined”
【问题讨论】:
标签: react-router tdd enzyme assertion react-wrapper