耙子流产!语法错误:

时间:2014-05-23 10:59:24

标签: ruby-on-rails ruby ruby-on-rails-4

我正在使用“使用Rails 4进行敏捷Web开发”这本书,我是一个完整的初学者而不是理解一些问题。

我刚刚尝试了rake test:models命令

我被收回了:

rake aborted!
SyntaxError: /Users/********/Desktop/depot/test/models/product_test.rb:11: syntax error, unexpected end-of-input, expecting keyword_end

这到底是什么意思?我一字不漏地跟着这本书,遇到了这个问题。

提前感谢您的有用答案和想法!

这是product_test.rb代码

require 'test_helper'

class ProductTest < ActiveSupport::TestCase
    test "product attributes must not be empty" do
    product = Product.new
    assert product.invalid?
    assert product.errors[:title].any?
    assert product.errors[:description].any?
    assert product.errors[:price].any?
    assert product.errors[:image_url].any?
end

2 个答案:

答案 0 :(得分:1)

你有2个街区,但只有一个结束语句;最后需要另一个end

require 'test_helper' 

class ProductTest < ActiveSupport::TestCase   # <== this is the start of the class
  test "product attributes must not be empty" do   # <== this is the start of a block
    product = Product.new assert product.invalid? 
    assert product.errors[:title].any? 
    assert product.errors[:description].any? 
    assert product.errors[:price].any? 
    assert product.errors[:image_url].any? 
  end  # <== this is missing
end  # <== this is the end of the class

class是一个块的开头,do行末尾的test是另一个块。

这种类型的错误总是会在文件的最后一行报告,因为它无法判断缺少end,直到它到达文件的末尾并且找不到它。

答案 1 :(得分:0)

您错过了end do阻止。添加它应该可以解决错误。

require 'test_helper'

class ProductTest < ActiveSupport::TestCase
    test "product attributes must not be empty" do
    product = Product.new
    assert product.invalid?
    assert product.errors[:title].any?
    assert product.errors[:description].any?
    assert product.errors[:price].any?
    assert product.errors[:image_url].any?
  end #do end
end #class end