【问题标题】:How do I skip a observer after_save call while testing in Rspec?在 Rspec 中测试时如何跳过观察者 after_save 调用?
【发布时间】:2012-02-10 18:26:34
【问题描述】:

在我的 PostObserver 的 after_save 方法中有一些对外部服务的 API 调用。但我不想在使用 Rspec 进行测试时调用 after_save。有没有办法做到这一点?谢谢你。

这是 Rails 3.1

【问题讨论】:

    标签: ruby-on-rails-3 rspec observer-pattern


    【解决方案1】:

    把它存起来:

    PostObserver.instance.stub(:after_save => true)
    

    【讨论】:

    • 这让我想起了使用 PostObserver.any_instance.stubs(:after_save => true);谢谢你:)
    【解决方案2】:

    存根观察者可能会导致不必要的副作用,因为它们是单例的。 Rails 3.1 中的替代方法是 disable 测试中的观察者。例如

    Post.observers.disable :all do
      ..
    end
    

    旧版 Rails 的另一个选项是 no-peeping-toms gem。

    【讨论】:

      猜你喜欢
      • 2019-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-02
      • 1970-01-01
      • 2010-09-07
      • 2015-01-24
      相关资源
      最近更新 更多