Ответ 1
Вы также можете использовать actual.should be == expected
. Это просто зависит от того, что вы считаете красивее!
В RSpec, если у меня есть предупреждения и
x.should == 42
another_line_of_code
то я получаю предупреждение о
warning: useless use of == in void context
Есть ли что-нибудь, что я могу сделать, кроме
bitbucket = (x.should == 42)
Вы также можете использовать actual.should be == expected
. Это просто зависит от того, что вы считаете красивее!
RSpec-2 имеет eq(expected)
, который работает так же, как ==
без предупреждения:
actual.should eq(expected)
Использование:
x.should eq(42)
Или:
x.should be == 42
Или переместите x.should == 42
так, чтобы она была последней строкой внутри блока it.
Для тех, кто думает НО ПОЧЕМУ?
Я полный noob для Ruby, но вот мое понимание:
Предупреждение поступает из Ruby в качестве операторов типа x.should == 42
или 1 == 1
, возвращающих значение. Если это возвращаемое значение фактически не используется (например, назначено переменной, используется как аргумент функции или возвращается из блока), тогда Ruby, по понятным причинам, не видит смысла использовать инструкцию в первую очередь и предупреждает вас об этом.
Чтобы проверить это, вы можете запустить irb с флагом -w и добавить следующий код:
> irb -w
def example
1 == 1
:hello
end
1 == 1 должен выдать предупреждение о бесполезном == в контексте void. Попробуйте это без строки: hello, и вы не получите предупреждение, так как 1 == 1
будет использоваться как оператор return.
Я знаю Op, и другие здесь уже поняли это. Однако я хотел опубликовать это для таких людей, как я, которые могут задаваться вопросом, почему было вызвано предупреждение, и почему предлагаемые решения касались этой проблемы.