我正在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”。
我修复了这两个问题,我的代码现在似乎运行良好。我会把它留在这里,以防我错过了一些大事。
答案 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
函数。