tests run rails matchers how describe ruby rspec

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