ruby - run - shoulda-matchers
MĂ©todo de borrado Rspec solo para argumentos especĂficos (2)
¡Puedes agregar un stub predeterminado para el fire!
método que llamará a la implementación original:
boss.stub(:fire!).and_call_original
boss.stub(:fire!).with(employee1).and_return(true)
Sintaxis de Rspec 3 (@ pk-nb)
allow(boss).to receive(:fire!).and_call_original
allow(boss).to receive(:fire!).with(employee1).and_return(true)
¿Hay alguna manera de que el método stub solo tenga argumentos específicos? Algo como esto
boss.stub(:fire!).with(employee1).and_return(true)
Si cualquier otro empleado se pasa a boss.fire!
método, conseguiré que el boss received unexpected message
error boss received unexpected message
, pero lo que realmente me gustaría es simplemente anular el método para un argumento específico, y dejarlo para todos los demás.
¿Alguna idea de cómo se puede hacer esto?
Puede intentar escribir su propio método de anotación, con un código como este
fire_method = boss.method(:fire!)
boss.stub!(:fire!) do |employee|
if employee == employee1
true
else
fire_method.call(*args)
end
end