Rspec поддерживает составление совпадений.Список составляющих сопоставлений, которые он предоставляет, таков:
all(matcher)
include(matcher, matcher)
start_with(matcher)
end_with(matcher)
contain_exactly(matcher, matcher, matcher)
match(matcher)
change {}.from(matcher).to(matcher)
change {}.by(matcher)
Все сопоставляющие составления интуитивно понятны.Вы можете передать сопоставления сопоставляющему сопоставителю, и переданные сопоставители должны вернуть значение true, чтобы ожидание было истинным:
expect(@items).to all(be_visible & be_in_stock)
Но я не уверен насчет составных сопоставителей start_with и end_with.Посмотрите на этот пример:
fruits = ['apple', 'banana', 'cherry']
expect(fruits).to start_with( start_with('a') )
Что делает внешний и внутренний start_with в этом примере?