Ваш общий пример блока принимает аргумент method
, но вы не передаете его ему. Тем не менее, вы очень близки. Просто измените:
context ':url attribute' do
it_behaves_like "a URL", :url
end
Теперь мы передаем символ :url
общему примеру как method
. Затем вам нужно изменить ссылки на :method=
(что не удастся, потому что буквально subject.method=
) на subject.send("#{method}=", value)
, чтобы мы фактически вызывали метод url=
. например,
it "ensures that :#{method} does not exceed 255 characters" do
subject.send("#{method}=", 'http://' + '@' * 256)
expect(subject).to_not be_valid
end
При этом я бы порекомендовал изменить имя локальной переменной с method
на другое (возможно, даже method_name
), чтобы избежать путаницы method()
с вашей локальной переменной method
.
Полный пример