我正在使用酶测试一个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);
});
}期望:测试通过
Actual:“ReactWrapper::state("specificRankingOptionBtns"):TypeError要求state不能为null或undefined”
发布于 2019-06-12 19:29:43
我也有同样的问题。这对我很有效。
将{ MemoryRouter作为路由器}从‘react- Router -dom’导入;
it('should find MaskedTextInput in LoginPage', () => {
const mountWithRouter = node => mount(<Router>{node}</Router>);
const wrapper = mountWithRouter(<LoginPage {...mockedProps} />);
const maskedInput = wrapper.find('MaskedTextInput');
const componentInstance = wrapper
.childAt(0)
.childAt(0)
.instance(); // could also be instance
const mountedState = componentInstance.state.passwordInputType;
expect(mountedState).toEqual('password');
});https://stackoverflow.com/questions/56285755
复制相似问题