微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以在Ruby中的每一行之后运行代码?

我知道有可能在ruby中使用挂钩之前和之后修饰方法,但是可以为给定方法的每一行执行此操作吗?

例如,我有一个自动化测试,我想验证每个步骤后页面上没有显示错误.错误显示为红色div,并且对于Ruby不可见或者类似的东西,因此我必须手动检查它(还有其他几个用例).

我知道可能使用set_trace_func.但我认为这可能会带来更多问题而不是好处,因为它可以在整个调用树上运行(并且需要我自己过滤它).

更新(澄清):

我有兴趣拦截在给定方法中执行的所有操作(或调用).这意味着调用了未指定数量的类,因此我不能只截取任何给定的类/方法集.

解决方法

它是,您可以在 The Ruby Programming Language的第8.9节中获得有关如何执行此操作的完整说明.在每次调用方法时运行代码涉及将方法发送到具有method_missing实现的Tracedobject类.无论何时收到消息,它都会调用method_missing并执行您为其分配的任何代码. (当然,这是一般追踪).

这是对此过程的一般描述,您可以查阅本书了解详细信息.

原文地址:https://www.jb51.cc/ruby/274022.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐