Sí, es posible, pero la sintaxis que desea usar (usando espacios en todas partes) tiene la implicación de que have(:name)
y eq('John')
se aplican todos los argumentos al método should
. Entonces tendrías que predefinirlos, que no pueden ser tu objetivo. Dicho esto, puedes usar RSPEC Custom Matchers Para lograr un objetivo similar:
require 'rspec/expectations'
RSpec::Matchers.define :have do |meth, expected|
match do |actual|
actual.send(meth) == expected
end
end
Esto te da la siguiente sintaxis:
it { should have(:name, 'John') }
Además, puedes usar its
its(:name){ should eq('John') }