我正在使用“使用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
答案 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