2010-09-05 4 views

Respuesta

7

También puede utilizar actual.should be == expected. ¡Simplemente depende de lo que pienses que se ve más bonito!

21

RSpec-2 tiene un matcher eq(expected) que funciona igual que == sin la advertencia:

actual.should eq(expected) 
20

Uso:

x.should eq(42) 

O:

x.should be == 42 

O mover x.should == 42 para que sea la última línea dentro del bloque que.


Para aquellos que estén pensando pero por qué?

soy un novato completa a Ruby, pero aquí es mi entendimiento:

La advertencia proviene de Rubí como declaraciones como x.should == 42 o 1 == 1 devuelve un valor. Si este valor de retorno no se usa realmente (por ejemplo, se le asigna a una variable, se usa como argumento para una función o se devuelve del bloque), es comprensible que Ruby no tenga sentido utilizar la declaración en primer lugar y lo alerta sobre esto.

Para probar esto, puede lanzar IRB con la bandera -w y agregue el código siguiente:

> irb -w 

def example 
    1 == 1 
    :hello 
end 

El 1 == 1 debe emitir una advertencia sobre == inútiles en marco vacío. Pruébelo sin la línea: hello y no recibirá la advertencia ya que 1 == 1 se usaría como declaración de devolución.

Conozco el Op y otros aquí ya entendieron esto. Sin embargo, quería publicar esto para personas como yo, que se estarán preguntando por qué se lanzó la advertencia y por qué las soluciones propuestas abordaron este tema.

+1

Esta debería ser la respuesta aceptada para el contexto. – expressions

Cuestiones relacionadas