我想在我的程序中测试一个方法,它处理应用程序的关闭。最后,此方法调用exit(0);
正如预期的那样,这也关闭了我的测试应用程序。
是否有可能在此特定单元测试中捕获退出信号,因此可以避免关闭测试应用程序?
答案 0 :(得分:1)
由于无法阻止exit()结束程序,因此您必须以某种方式更改遗留应用程序。
对于类似的问题,我使用了以下解决方案:
static void Wrapper::exit( int exit_code);
virtual void Base::exit( int exit_code) = 0;
Base
的类,它实现了正常的行为:void OsImpl::exit( int exit_code) { ::exit( exit_code); }
Wrapper
类最后包含一个指向要使用的实现的指针,默认情况下为OsImpl
的对象,但可以用例如TestImpl
替换。 static void Wrapper::setImpl( Base* handler);
无效的::exit( 0);
。Wrapper::exit( 0);
where: {
and: sequelize.literal('("Student"."totalDays" + "Student"."presentDays" ) > 50 ')
}
替换var arr = ["mod1"];
var replaced= $.map( arr, function( a ) {
return a.replace("mod", "");
});
console.log(replaced);
我知道这很浓缩,但我希望你明白这一点。