reactjs - Jest React - 否则未采取路径
问题描述
我正在尝试为此 React 组件添加测试覆盖率,并且当 if 语句后没有 else 时,我在组件上收到此消息“未采用其他路径”。
下面是我的带有开玩笑警告的组件。有人可以帮忙介绍这部分吗?
function CustomerSatisfaction(props: FeedbackProps) {
const [status, setStatus] = useState<
'idle' | 'active' | 'pending' | 'success' | 'error'
>('idle');
const handleSubmit = useCallback(
async (smileyType: string, options: Record<string, string>) => {
setStatus('pending');
try {
const result = await fetchWithError(() => {
setStatus('error');
})('/pub/feedback/feedbacks', 'POST', {
surveyType: 'service',
smileyType,
comments: options.comment,
ratings: {
clearness: options['customer_satisfaction.clear'],
ease: options['customer_satisfaction.easy'],
speed: options['customer_satisfaction.fast'],
performance: options['customer_satisfaction.perf'],
},
pageUrl: window.location.href,
serviceId: props.serviceId,
productId: props.productId,
});
**(else path not taken)** if (result.success) {
setStatus('success');
}
} catch (e) {
setStatus('error');
}
},
[],
);
return (
<CustomerSatisfactionComponent
i18n={props.i18n}
status={status}
onSubmit={handleSubmit}
/>
);
}
解决方案
伙计们,如果有人遇到这个问题,这是我的案例的解决方案
it('should render failure state', async () => {
const component = shallow(
<CustomerSatisfaction
i18n={() => ({})}
serviceId="123"
productId="123"
/>,
);
(fetchWithError as jest.Mock).mockReturnValue(
jest.fn().mockResolvedValue({
success: false,
}),
);
const onSubmit: any =
component.find(CustomerSatisfactionComponent).prop('onSubmit') ||
(() => {});
await onSubmit('test', {});
expect(component).toMatchSnapshot();
});
推荐阅读
- javascript - 在 Nativescript-vue 中从一个页面转到另一个页面时出错
- python - 如何将日期字符串添加到 URL?
- mongodb - 如何在 MongoDB Ops Manager 中启用可查询快照
- php - 如何使用简单的 html dom 获取隐藏输入的值?
- arrays - 如何将匹配的字符串从 kotlin 中的二维数组打印到整数?
- r - 无法在 Windows 10 的 R Studio 中安装汽车包
- quarkus - 在 Quarkus 中运行非 API 服务的正确方法是什么?
- python - postgres 触发器通知 - 更好的是:之前或之后
- python - 在函数内访问 scipy.integrate.odeint 中的当前时间步
- java - 如何在 Java 中使用 Kotlin 类的中缀函数?