【问题标题】:How to call original method in btakita/rr ?如何在 btakita/rr 中调用原始方法?
【发布时间】:2013-12-03 08:13:40
【问题描述】:

我需要检查是否调用了特定方法。 btakita/rr 有可能吗?

rspec 示例来自: https://www.relishapp.com/rspec/rspec-mocks/v/2-13/docs/message-expectations/calling-the-original-method!

    Addition.should_receive(:two_plus_two).and_call_original

【问题讨论】:

    标签: ruby-on-rails ruby rspec rr


    【解决方案1】:

    根据original rr announcement,您需要使用以下方法:

    original_two_plus_two = Addition.method(:two_plus_two)
    mock(Addition).two_plus_two {original_two_plus_two.call}
    

    但是,如果您可以在 原始版本之后调用 double,那么您可以使用 rr 的 proxy 功能,在https://github.com/rr/rr#proxies 中进行了描述,如下所示:

    mock.proxy(Addition).two_plus_two
    

    (感谢@ElliotWinkler 澄清在这种情况下不需要阻止。)

    【讨论】:

    • 感谢您接受我的回答。 :-) 作为一项实验,我正在对我最近接受的十个没有投票的答案发表评论,并提供指向meta.stackexchange.com/questions/686/… 的链接以查看响应是什么。请注意,我完全尊重每个人在他们认为合适的情况下投票、反对或不做任何事情的权利。 :-)
    • 你不需要这个块。只需使用mock.proxy(Addition).two_plus_two
    • @ElliotWinkler 谢谢。我相信你和我会更新我的答案,但如果你碰巧知道这是否记录在除代码之外的其他任何地方,我将不胜感激。
    • 我将 repo 移至github.com/rr/rr。有一个关于代理的部分here 以及一些关于它的更多信息here(虽然它并不能很好地解释代理,但我需要对这个文档进行彻底检查)。编辑:哦,您说的是#proxy 不必阻塞。不,不幸的是没有记录,我只是碰巧知道。
    猜你喜欢
    • 2023-03-15
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多