Rspec stubbing method for only specific arguments

前端 未结 2 1134
野的像风
野的像风 2021-02-02 06:34

Is there a way to stub method for only specific arguments. Something like this

boss.stub(:fire!).with(employee1).and_return(true)

If any other

相关标签:
2条回答
  • 2021-02-02 06:49

    You can add a default stub for the fire! method which will call original implementation:

    boss.stub(:fire!).and_call_original
    boss.stub(:fire!).with(employee1).and_return(true)
    

    Rspec 3 Syntax (@pk-nb)

    allow(boss).to receive(:fire!).and_call_original
    allow(boss).to receive(:fire!).with(employee1).and_return(true)
    
    0 讨论(0)
  • 2021-02-02 06:59

    You can try write your own stubbing method, with code like this

    fire_method = boss.method(:fire!)
    boss.stub!(:fire!) do |employee|  
      if employee == employee1
        true
      else
        fire_method.call(*args)
      end
    end
    
    0 讨论(0)
提交回复
热议问题