如何在ruby中存根sub方法

时间:2017-04-29 07:48:50

标签: ruby rspec

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

未定义的方法`sub'代表nil:NilClass

为什么这不起作用?

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

感谢。

1 个答案:

答案 0 :(得分:1)

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