【问题标题】:How to stub the sub method in ruby如何在 ruby​​ 中存根子方法
【发布时间】:2017-04-29 17:32:58
【问题描述】:

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

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

为什么这不起作用?

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

谢谢。

【问题讨论】:

    标签: ruby rspec


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 2012-03-12
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多