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