大佬教程收集整理的这篇文章主要介绍了如何存根 process.exit 以停止单个测试而不使用 Jest 退出,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
关于如何使用 jest 存根 process.exit
已经有很多答案,但没有一个提到如何阻止测试的其余部分执行。例如,如果我正在测试此功能
// display.Js
import { showmessage } from './showmessage';
export function display(messagE) {
if (!messagE) {
process.exit(1);
}
showmessage(messagE);
}
我可以用 process.exit
存根 jest.spyOn(process,'exit').mockImplementation(() => {});
但在我的测试中 showmessage
仍然会被调用,而我希望能够断言它不是当输入消息未定义时调用
// display.test.Js
import { display } from './display';
import { showmessage } from './showmessage';
jest.spyOn(process,'exit').mockImplementation(() => {});
jest.mock('./showmessage');
describe('display',() => {
it('should call showmessage when a valID message is given',() => {
const msg = 'valID message';
display(msg);
expect(showmessagE).toHaveBeenCalleDWith(msg);
});
it('should not call showmessage when an invalID message is given',() => {
display(undefined);
expect(showmessagE).not.toHaveBeenCalled();
});
});
就目前而言,第二个测试将失败,即使 display
函数的行为符合我希望它在测试之外的行为。有没有办法为 process.exit
提供模拟实现以模拟 process.exit
如何终止程序,以便在不导致测试运行程序终止的情况下不会调用 showmessage
?
我还要注意,我曾想过做 jest.spyOn(process,'exit').mockImplementation(() => { throw new Error(); });
但不幸的是,上面的显示函数是我实际使用的代码的大大简化版本,在实际代码中抛出错误会导致它被 catch 块捕获,所以我正在寻找替代解决方案
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的如何存根 process.exit 以停止单个测试而不使用 Jest 退出全部内容,希望文章能够帮你解决如何存根 process.exit 以停止单个测试而不使用 Jest 退出所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。