2014-11-08 26 views
0

下面的代碼不紅寶石2.1編譯在OS X上的錯誤信息是很奇怪:早該語境和語法,紅寶石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) 

也就是說,它正在請求我刪除最後的「最終「的聲明,當我這樣做,它確實編譯!所以我的第一個問題是,如何或爲何那就是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 
這是在安裝塊中聲明

,似乎是在應該方法無法訪問。

我在這裏的懷疑是的框架應該不會在紅寶石的當前版本正確解析,但很新的紅寶石莫名其妙的語法,因此任何見解將不勝感激。

謝謝!

+0

這可能是一個錯字或Ruby的塊的語法的誤解。究其原因除去了'end'工作是因爲你然後做你的意思是在類級別的'should'塊的東西。 – 2014-11-10 14:46:49

回答

0

這個錯誤是因爲你在傳遞給should塊的開始丟失了的do。早該對MINITEST

should "run should return 1 if arguments are invalid" do 
    @lm=Leitmotif.new 
    print("\nASDF\n") 
    print(@lz.inspect); 
    print(@lm.inspect) 
    print("\nASDF\n") 
    [email protected]("","") 
    #assert_equal 1, x 
end 

大多數實現簡單的別名Minitest Spec DSL's itshould,所以這些文檔應該有所幫助。