如何使用RSpec存根Array实例方法

时间:2013-01-12 11:00:59

标签: ruby rspec rspec2 stub

我在String类中有一个实例方法,它调用Array实例方法“shuffle”。为了让我使用RSpec测试方法,我想将其存根。

vowels = %w(a e i o u y)
vowels.shuffle

我试过了:

Array.stub(:shuffle).and_return(%w(a e i o u y))
[].stub(:shuffle).and_return(%w(a e i o u y))

但没有工作:(我在这里错过了一些东西?可能会嘲笑?但是我应该嘲笑那个......

谢谢。

1 个答案:

答案 0 :(得分:5)

使用any_instance。例如:

describe "any_instance.stub" do
  it "returns the specified value on any instance of the class" do
    Array.any_instance.stub(:shuffle).and_return(%w(a e i o u y))

    o = Array.new
    o.shuffle.should eq(%w(a e i o u y))
  end
end

Source