gpt4 book ai didi

javascript - 如何在 Jest 中将数据作为上下文传递?

转载 作者:行者123 更新时间:2023-11-29 10:56:54 25 4
gpt4 key购买 nike

我正在尝试使用 Jest 在 enzyme 测试中传递上下文,as shown in the Airbnb doc ,但上下文返回 undefined。我不确定我在这里做错了什么。

App.js

class App extends Component{
componentWillMount(){
console.log("Context in App", this.context) // getting undefined when running test case
}

render(){
return(
<div>
Sample Application
</div>
)
}
}

export default App;

App.test.js

import React from 'react';
import { shallow } from 'enzyme';
import App from './App';

describe('App test cases', () => {
let wrapper;
let AppContext = {name: "React is Simple"};
beforeEach(() => {
wrapper = shallow(<App />, {context: AppContext })
})
test('should pass render the component without crashing', () => {
expect(wrapper).toMatchSnapshot()
})
})

版本

React: 16.8.1
enzyme: 3.8.0
enzyme-adapter-react-16: 1.7.1

最佳答案

这似乎是一个 open issue for enzyme对于 the new context api .作为解决方法,您可以设置静态 contextTypes :

App.contextTypes = {
name: PropTypes.string
};

然后您可以根据需要操纵上下文:

shallow(<App />, {context: {name: "React is Simple"}}) // did mount
.setContext({ name: 'some new context'}); // did update

在您的应用中:

componentDidMount(){
console.log("Context in App", this.context)
}
componentDidUpdate() {
console.log(this.context);
}

希望对您有所帮助。

关于javascript - 如何在 Jest 中将数据作为上下文传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55293154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com