遇到:语法错误,意外的tIDENTIFIER,期待keyword_end

时间:2016-07-22 16:17:42

标签: ruby rspec

我正在Ruby中创建一个directed_graph类来练习使用RSpec。我一直得到上​​面的错误(在第13行,这是下面的行“eql(0)”)。

我真的不明白这个错误,特别是因为这个RSpec代码看起来非常类似于我为其他有效项目编写的其他RSpec代码。

require "directed_graph"
include directed_graph

describe directed_graph do

    describe ".vertices" do
        context "given an empty graph" do
            it "returns an empty hash" do
                g = directed_graph.new()
                expect(g.vertices().length()).to() eql(0)
            end
        end
    end

end
编辑:我认为问题是(1)directed_graph是一个类,类必须以大写字母开头(所以我重命名为DirectedGraph),(2)你不应该为类编写“include”。

我修复了这两个问题,我的代码现在似乎运行良好。我会把它留在这里,以防我错过了一些大事。

1 个答案:

答案 0 :(得分:0)

我相信代码应该是这样的:

require "directed_graph"
include DirectedGraph

describe DirectedGraph do
  describe ".vertices" do
    context "given an empty graph" do
      it "returns an empty hash" do
        expect(directed_graph.new.vertices.length).to eql(0)
      end
    end
  end
end

让我解释一下原因。首先包括通常包括类/模块。 ruby中的类和模块用其名称的每个部分(也称为UpperCamelCase)用大写字母表示。当您在rspec中描述类时,您还应该使用UpperCamelCase。我还清理了一些代码以使其更易于阅读。您并不总是需要()来表示功能。这是隐含的。但有时你确实需要它,例如使用expect函数。