Forms Jest-Antd表单中的访问函数。提交后验证

Forms Jest-Antd表单中的访问函数。提交后验证,forms,jestjs,enzyme,antd,Forms,Jestjs,Enzyme,Antd,我想测试我通过props传递的函数在提交和Antd form.validateFields之后是否被调用。 在查看之后,我已经尝试了expect(myfunction).toHaveBeenCalled(),但没有成功。 如果我的函数不在form.validateFields的范围内,则它可以工作,但如果在form.validateFields的范围内,则不能工作 下面是描述表单+提交函数的类的代码摘录 导出类设置Masterbot扩展React.Component{ 构造函数(道具:ISett

我想测试我通过props传递的函数在提交和Antd form.validateFields之后是否被调用。 在查看之后,我已经尝试了expect(myfunction).toHaveBeenCalled(),但没有成功。 如果我的函数不在form.validateFields的范围内,则它可以工作,但如果在form.validateFields的范围内,则不能工作

下面是描述表单+提交函数的类的代码摘录

导出类设置Masterbot扩展React.Component{
构造函数(道具:ISettingsMasterbotProps){
超级(道具);
this.state={};
this.handleSubmit=this.handleSubmit.bind(this);
}
handleSubmit(事件:React.FormEvent){
event.preventDefault();
试一试{
//这被称为
this.props.changeMasterbotParameters({
名称:“”,
问候信息:[''],
消除歧义消息:[''],
阿凡达:'',
rgpd:{n工作日:90}
});
}捕获(e){
console.error('error:',e)
}
this.props.form.validateFields((错误,值)=>{
如果(!err){
log('Received values of form:',values);//这显示在console中
试一试{
//这不被视为被测试调用(测试失败)
this.props.changeMasterbotParameters({
name:values.name,
greetingMessages:values.greetingMessages,
消歧消息:值。消歧消息,
阿凡达:'',
rgpd:{nbofDays:values.rgpdNbOfDays}
});
}捕获(e){
console.error('error:',e)//这不会显示在控制台中
}
}否则{
//出现了一个错误,Antd表单验证
message.warning('哦,不!某些条目丢失!');
}
});
};
render(){
const{getFieldDecorator}=this.props.form;
返回(
{
让包装器:反应包装器;
让accountSettings=mockupInitialState.accountSettings;
让systemSettings=mockupInitialState.systemSettings;
const wrapperForm=shallow();
//常量组件:ReactWrapper=mount(wrapperForm.find(setingsmasterbot));
const component=wrapperForm.find(setingsMasterBot);
const form=component.props().form;
常量道具={
accountSettings:accountSettings,
系统设置:系统设置,
changeMasterbotParameters:jest.fn(),//函数已模拟
表格:表格
};
以前(()=>{
wrapper=mount()//beforeAll的原因是,react类中使用的某些组件具有奇怪的行为(如果我在每次之前都会多次构建它们自己)。
});
在每个之前(()=>{
开玩笑。clearAllMocks();
});
单击“保存”时会调用它(+++check saveMasterbotParameters函数,()=>{
//find('.ant btn.saveMasterbotParameters btn').simulate('submit',{preventDefault:()=>{jest.fn()});
find(Form).simulate('submit',{preventDefault:()=>{jest.fn()}});
expect(props.changeMasterbotParameters).toHaveBeenCalled();//此操作失败
//供参考
expect(wrapper.find(SettingsMasterbot.prop('changeMasterbotParameters')).toEqual(props.changeMasterbotParameters)
//这是通过的,所以道具通过得很好。
});
欢迎提供任何线索/建议……我觉得它就在我面前,但看不见。 请随意提问,我会一路编辑