如何使用RSpec对数组实例方法进行存根

Pie*_*ois 4 ruby rspec stub rspec2

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

vowels = %w(a e i o u y)
vowels.shuffle
Run Code Online (Sandbox Code Playgroud)

我试过了:

Array.stub(:shuffle).and_return(%w(a e i o u y))
[].stub(:shuffle).and_return(%w(a e i o u y))
Run Code Online (Sandbox Code Playgroud)

但是没有任何工作:((我在这里错过了什么?也许是在嘲笑?但是那我该嘲笑什么...)

谢谢。

Yev*_*yev 6

使用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
Run Code Online (Sandbox Code Playgroud)

资源