Да, это возможно, но синтаксис, который вы хотите использовать (с использованием пробелов повсюду), подразумевает, что have(:name)
и eq('John')
все аргументы применяются к методу should
.Поэтому вам придется заранее определить те, которые не могут быть вашей целью.Тем не менее, вы можете использовать пользовательские сопоставления rspec для достижения аналогичной цели:
require 'rspec/expectations'
RSpec::Matchers.define :have do |meth, expected|
match do |actual|
actual.send(meth) == expected
end
end
Это дает вам следующий синтаксис:
it { should have(:name, 'John') }
Кроме того, вы можете использовать its
its(:name){ should eq('John') }