Ruby on rails 如何在rspec上编写陷阱处理规范?

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 } 但它似乎什么也没做(陷阱并没有被触发)。最后,我

假设我有一个捕获SIGTERM的类,我想编写一个规范来验证在收到SIGTERM时是否运行了特定的代码。正确的做法是什么?
我遵循了本主题的答案:,但是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)