2016-05-24 3 views
0

В спецификации я хочу, чтобы сравнить два многомерные массивы:Сравните многомерные массивы

array1 = [["a"],["b"],["c"]] 
array2 = [["b"]] 
expect(array1).to include(array2) 

Но он возвращает:

Failure/Error: expect(array1).to include(array2) 
     expected [["a"], ["b"], ["c"]] to include [["b"]] 

Кроме того, это приводит к той же ошибки:

array1 = [["a"],["b"],["c"]] 
array2 = array1 
expect(array1).to include(array2) 

Итак, как я могу сравнить эти два массива?

+0

Я считаю, это не должно быть элементом не массив: 'ожидалось [[«а»], [«б»], [«с»]] включить (["b"]) ' –

ответ

0

include? method тестирует параметров против членов массива, так что вы должны были бы проверить с ['b'] элементом array2 только:

array1 = [["a"],["b"],["c"]] 
array2 = [["b"]] 
expect(array1).to include(array2.first) 
# => should pass 

Если там может быть больше одного элемента в секунду массив, вы можете использовать пересечение двух массивов:

array1 = [["a"],["b"],["c"]] 
array2 = [["a"], ["b"]] 
expect(array1 & array2).to eq(array2) 
# => should pass 

array1 = [["a"],["b"],["c"]] 
array2 = [["a"], ["e"]] 
expect(array1 & array2).to eq(array2) 
# => should fail 
Смежные вопросы