如何在ruby中存根子方法

如何在ruby中存根子方法,ruby,rspec,Ruby,Rspec,尝试存根子方法时出现以下错误: nil:NilClass的未定义方法“sub” 为什么这样不行 allow(String).to receive(:sub).with('xxyy').and_return('yy') 谢谢 allow(String).to receive(:sub).with('xxyy').and_return('yy') 这意味着存在一个只接受一个字符串作为参数的类方法String.sub: describe "String.sub stub" do it "ret

尝试存根子方法时出现以下错误:

nil:NilClass的未定义方法“sub”

为什么这样不行

allow(String).to receive(:sub).with('xxyy').and_return('yy')
谢谢

allow(String).to receive(:sub).with('xxyy').and_return('yy')
这意味着存在一个只接受一个字符串作为参数的类方法String.sub:

describe "String.sub stub" do
  it "returns yy" do
    allow(String).to receive(:sub).with('xxyy').and_return('yy')
    expect(String.sub('xxyy')).to eq('yy')
  end
end
您确定要存根的方法具有以下语法:

String.sub('xxyy') # => 'yy'
?

这应该更接近您想要实现的目标:

describe "'xxyy'.sub stub" do
  it "returns yy" do
    string = 'xxyy'
    allow(string).to receive(:sub).and_return('yy')
    expect(string.sub).to eq('yy')
  end
end