如何使用rspec初始化存根方法

时间:2015-06-02 18:59:09

标签: ruby-on-rails ruby rspec rspec-rails

class Party
    attr_accessor :number
  include Validations

    def initialize
        self.number = proccess_args(2)
        puts luhn?
    end

    def proccess_args(opt)
        ARGV[opt].downcase
    end
end

要求'spec_helper'

describe Party do
  before :each do

    new_method = Party.method(:new)
    allow(self).to receive(proccess_args).with(2).and_return('add')
    @party = Party.new 
  end
end

spec_helper.rb     require_relative'.. /'

require 'yaml'

我如何使用rspec,以确保实际上没有调用proccess_args,但是为了避免ARGV炸毁我的测试而进行模拟?例如,我想伪造proccess_args(2)的调用以返回“Jason Wade”,并避免ARGV [opt]被rspec触及。

1 个答案:

答案 0 :(得分:0)

allow(ARGV).to receive(:downcase).and_return('whatever')

您告诉RSpec allow ARGV receive一个名为:downcase and_return 'whatever'的方法,而不是在代码中实际调用它正在接受测试(那部分可能不是特别有用,但这是一种解释,让它点击我的脑袋。)