ruby-on-rails - 在运行时而不是在 stub 声明中执行 rspec stub ?

标签 ruby-on-rails ruby rspec rspec2

假设我需要 stub 一个方法以便它返回当前时间: MyClass.stub(:my_method).and_return(Time.now.utc)

问题是,这个 stub 在 stub 声明时返回时间,而不是在我运行 MyClass.new.my_method 时返回。

有没有办法在调用方法时使 stub 运行?

最佳答案

将一个 block 传递给 and_return,它会在运行时完成您想要完成的工作,就像这样......

describe MyClass do

  it "runs at runtime" do
    puts Time.now.utc

    MyClass.stub(:my_method).and_return do
      Time.now.utc
    end
    sleep 5.seconds

    puts MyClass.my_method
  end
end

关于ruby-on-rails - 在运行时而不是在 stub 声明中执行 rspec stub ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9831810/

相关文章:

ruby-on-rails - Ruby(猴子修补数组)

ruby-on-rails - 为什么 rails 资源不生成编辑和新路径?

ruby-on-rails - 选择总是返回 :id even if it is not included in the call

php - RUBY 和 RAILS 相对于 PHP 和 CODEIGNITER 的主要优势是什么

ruby - 什么是 Rspec 中的待定测试?

ruby-on-rails - 仅由 Rspec 中的用户创建者销毁对象

javascript - 是否可以使用 <span> 中的值作为 Ruby 函数的参数?

ruby-on-rails - DatabaseCleaner.clean_with( :truncate) does not reset auto incremented id

ruby - Ruby 中是否有像 C 中那样的 "main"方法?

ruby-on-rails - bundler 问题( ruby )