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触及。
答案 0 :(得分:0)
allow(ARGV).to receive(:downcase).and_return('whatever')
您告诉RSpec allow
ARGV
receive
一个名为:downcase
and_return
'whatever'
的方法,而不是在代码中实际调用它正在接受测试(那部分可能不是特别有用,但这是一种解释,让它点击我的脑袋。)