Следующий код не компилируется в рубин 2.1 на OS X. Сообщение об ошибке довольно странно:Shoulda контекст и синтаксис, рубин 2,1
/Library/Ruby/Gems/2.0.0/gems/rake-10.3.2/lib/rake/rake_test_loader.rb:10:in `require':
/Users/jayunit100/Development/leitmotif/test/test_leitmotif.rb:21:
syntax error, unexpected keyword_end, expecting end-of-input (SyntaxError)
То есть, он просит, чтобы я удалить окончательный " end "из класса, и когда я это делаю, он действительно компилируется! Поэтому мой первый вопрос заключается в том, как и почему это так: rake_test_loader хочет объявление класса без закрывающего блока.
require 'helper'
require 'minitest/autorun'
class TestLeitmotif < MiniTest::Test
### A simple test
context "Leitmotif core tests" do
setup do
@lm = Leitmotif.new
end
should "run should return 1 if arguments are invalid"
@lm=Leitmotif.new
print("\nASDF\n")
print(@lz.inspect);
print(@lm.inspect)
print("\nASDF\n")
[email protected]("","")
#assert_equal 1, x
end
end
end
Моя вторая проблема здесь состоит в том, что переменная
@lm = Leimotif.new
который объявлен в блоке настройки, кажется, недоступны в методе должен.
Мое подозрение здесь в том, что как-то синтаксис структуры if не корректно анализируется в текущей версии ruby, но я совершенно новый для ruby, поэтому любое понимание будет оценено.
Спасибо!
Это либо опечатка, либо непонимание синтаксиса блока Ruby. Причина, по которой удаляются работы 'end', заключается в том, что вы делаете все, что хотите, чтобы быть в блоке' should' на уровне класса. –