than test matchers is_expected higher falsey example better array all arrays testing rspec

arrays - test - ¿Cómo debería incluir la matriz rspec? otra matriz



rspec is_expected (2)

Si desea afirmar el orden de la matriz de subconjuntos, deberá hacer un poco más de lo que should include(..) , ya que la comparación de include RSpec solo afirma que cada elemento aparece en cualquier parte de la matriz, no que todos Los argumentos se muestran en orden.

Terminé usando each_cons para verificar que la sub-matriz está presente en orden, como esto:

describe [1, 3, 5, 7] do it ''includes [3,5] in order'' do subject.each_cons(2).should include([3,5]) end it ''does not include [3,1]'' do subject.each_cons(2).should_not include([3,1]) end end

Estoy tratando de probar si una matriz incluye otra (rspec 2.11.0)

test_arr = [1, 3] describe [1, 3, 7] do it { should include(1,3) } it { should eval("include(#{test_arr.join('','')})")} #failing it { should include(test_arr) } end

este es el resultado rspec spec / test.spec ..F

Failures: 1) 1 3 7 Failure/Error: it { should include(test_arr) } expected [1, 3, 7] to include [1, 3] # ./spec/test.spec:7:in `block (2 levels) in <top (required)>'' Finished in 0.00125 seconds 3 examples, 1 failure Failed examples: rspec ./spec/test.spec:7 # 1 3 7

El include rspec mehod no acepta un argumento de matriz, ¿hay una mejor manera de evitar "eval"?


Simplemente use el operador splat (*), que expande una matriz de elementos en una lista de argumentos que se pueden pasar a un método:

test_arr = [1, 3] describe [1, 3, 7] do it { should include(*test_arr) } end