2013-09-15 3 views
0

Я тестирую с помощью Rspec, и я хотел бы проверить, содержит ли массив какой-либо элемент из другого массива.Проверка, если hash включает любой элемент

elements = ['e1', 'e2'] 
hash = {'e1' => 5, 'e8' => 8} 

it "Include any element from elements" do 
    hash.should include('e1') || hash.should include('e2') 
end 

хэш должен включать в себя любой элемент (как ключ) от элементов. есть более элегантный способ ?. Благодарю.

ответ

3

Это должно работать:

(elements & hash.keys).should_not be_blank 

Это будет проходить, если массив содержит хотя бы один элемент, который присутствует в another_array.

hash.keys просто вернуть массив всех ключей этого хэша.

+0

Извините, я не правильно сформулировал свой вопрос, поэтому он не работает. – ie8888

+0

Обновлен ответ для хэш-ключей. – Nerve

+1

'be_empty' лучше, так как он не полагается на« пустой? »ActiveSupport. Плюс возвращаемое значение всегда будет массивом. –

1

Возможно:

anotherArray = anotherArray | elements 

Или просто

anotherArray |= elements 

Для обновления:

elements.each{|e| hash[e] = e[1..-1].to_i unless hash.has_key?(e)} 
+0

Извините, я не правильно сформулировал свой вопрос, поэтому он не работает. – ie8888

+0

К какой из них относится 'it',' hash' или 'anotherArray'? – konsolebox

+0

Хеш, я переделал. Извините и спасибо. – ie8888

Смежные вопросы