一个简单的 RSpec 示例
在 greeter.rb 中(无论你的项目在哪里):
class Greeter
def greet
"Hello, world!"
end
end
在 spec / greeter_spec.rb 中:
require_relative '../greeter.rb'
RSpec.describe Greeter do
describe '#greet' do
it "says hello" do
expect(Greeter.new.greet).to eq("Hello, world!")
end
end
end
所以我们的文件结构如下:
$ tree .
.
├── greeter.rb
└── spec
└── greeter_spec.rb
1 directory, 2 files
输出
$rspec greeter_spec.rb
Finished in 0.00063 seconds (files took 0.06514 seconds to load)
1 example, 0 failures
在 RSpec 术语中,文件是 Greeter
的 spec
,而 it
块是示例。与 expect
的线是一个期望。如果满足期望,则没有任何反应并且测试通过。如果不是,则测试失败。
这个例子还表明 describe
块可以嵌套,在这种情况下传达 greet
方法是 Greet
类的一部分。#greet
中的 #
只是一个约定,表明 greet
是一个实例方法(与类方法的’。‘相对)。RSpec 根本不解释字符串,因此你可以使用不同的字符串或完全省略 describe
块。