نعم ، هذا ممكن ، لكن بناء الجملة الذي تريد استخدامه (باستخدام المساحات في كل مكان) يحتوي على ضمان 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') }