我有一个 JSX 文件来编写玩笑单元测试。
../dist/容器/索引
constructor(props) {
super(props);
this.state = {
showName: null
}
}
componentWillMount() {
Request
.get('/api')
.end((err, res) => {
if (res) {
this.setState({
showName: res.name
});
}
});
}
render (
let { showName } = this.state;
render (
{showName ? <div> showName</div> : <div>No Name</div> }
)
)
在测试文件中,
import landing from '../dist/container/index’;
describe(‘landing’, () => {
it(‘check’, () => {
jest.mock('../dist/container/index’, () => {});
landing.componentWillMount = jest.fn().mockImplementation(() => { return { 'a': '2'} });
const lands = shallow(<landing productDetails={productDetail} messages={messages}/>);
expect(lands.componentWillMount()).toBeCalledWith({‘a’: '2'});
})
});
我收到以下错误。
期望(jest.fn())[.not].toBeCalledWith()
jest.fn() 值必须是模拟函数或间谍。收到:对象:{“a”:“2”}
我想模拟整个 componentwillmount 调用并需要获取 showName,但我总是得到 No Name。有什么支持吗?