【问题标题】:Why is mocha not stubbing this method in my Rails 3 integration test?为什么 mocha 没有在我的 Rails 3 集成测试中存根此方法?
【发布时间】:2013-01-22 15:24:57
【问题描述】:

我有以下几点:

  setup do
    Capybara.current_driver = Capybara.javascript_driver
    @project.user = @user
    @project.save
    Project.any_instance.stubs(:price_all)
  end

但我的测试失败了,因为 Project.price_all 方法正在运行:

/Users/me/code/rails/myapp/app/models/project.rb:178:in `price_all'

在我升级到 Capybara 2 和最新版本的 capybara-webkit 之前,这一直正常工作。

为什么该方法仍在运行?我该如何解决?

【问题讨论】:

    标签: ruby ruby-on-rails-3 minitest ruby-mocha


    【解决方案1】:

    当你说“Project.price_all 方法正在运行”时,这是一个错字,还是price_all 真的是一个类方法?如果它确实是一个类方法,您将希望使用Project.stubs(:price_all) 而不是包含any_instance,因此存根直接位于Project 类上,而不是Project 的实例上。如果这不是您的问题,我不确定根据您提供的代码示例还有什么建议。

    【讨论】:

    • 它不是类方法。我的意思是在 Project 类的一个实例上调用 price_all 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    相关资源
    最近更新 更多