Ruby on rails 如何在rspec上编写陷阱处理规范?
假设我有一个捕获SIGTERM的类,我想编写一个规范来验证在收到SIGTERM时是否运行了特定的代码。正确的做法是什么?Ruby on rails 如何在rspec上编写陷阱处理规范?,ruby-on-rails,ruby,error-handling,rspec,signals,Ruby On Rails,Ruby,Error Handling,Rspec,Signals,假设我有一个捕获SIGTERM的类,我想编写一个规范来验证在收到SIGTERM时是否运行了特定的代码。正确的做法是什么? 我遵循了本主题的答案:,但是rspec在Process.kill发生时终止。 我也试过这样做: raise SignalException.new('TERM') trap('SIGTERM') { Rails.logger.error('term') @received_sigterm = true } 但它似乎什么也没做(陷阱并没有被触发)。最后,我
我遵循了本主题的答案:,但是rspec在Process.kill发生时终止。
我也试过这样做:
raise SignalException.new('TERM')
trap('SIGTERM') {
Rails.logger.error('term')
@received_sigterm = true
}
但它似乎什么也没做(陷阱并没有被触发)。最后,我尝试使用“允许”替换在规范中调用的方法,以发出信号或调用过程。kill如下所示:
allow(<Class>).to receive(<method>).and_raise(SignalException.new('TERM'))
allow(<Class>).to receive(<method>).and_return(Process.kill 'TERM',0)