Ruby TDD 和 Rspec
Ruby TDD and Rspec
我是 ruby 中 Rspec 测试的新手。我只是想编写一个简单的测试来查看下面的代码是否有效。我不知道该怎么做。代码 returns 给定字符串的首字母缩写词。谢谢
def acronym(sentence)
first_letters = []
sentence.split.each do |word|
first_letters << word[0]
end
first_letters.join
end
describe "acro method" do
it "returns acronym of words" do
end
end
使用 RSpec 匹配器来检查您的方法输出的内容是否与您期望的实际匹配。
https://relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
describe "acro method" do
it "returns acronym of words" do
test_sentence = "this is a test acronym"
expected_acronym = "tiata"
expect(acronym(test_sentence)).to eq(expected_acronym)
end
end
定义您的输入和预期输出
TDD 的重点是测试预期行为。要构建测试,您必须同时定义 fixture(已知输入值)和 expectation(您希望方法产生给定的输出一个已知的输入值)。然后,您将规范的结果与合适的匹配器进行比较。例如:
def acronym(sentence)
first_letters = []
sentence.split.each do |word|
first_letters << word[0]
end
first_letters.join
end
describe "#acronym" do
let(:sentence) { 'A very short sentence.' }
it "returns initial letter of each word" do
expect(acronym sentence).to eq('Avss')
end
end
当您运行文档格式的规范时,它应该读起来相当自然。
$ rspec --format doc foo_spec.rb
#acronym
returns initial letter of each word
Finished in 0.0017 seconds (files took 0.12358 seconds to load)
1 example, 0 failures
如果您将测试的预期输出从 Avss
更改为 avss
,那么您的预期将会失败。一个写得很好的测试会给你一个有用的错误,比如:
Failures:
1) #acronym returns initial letter of each word
Failure/Error: expect(acronym sentence).to eq('avss')
expected: "avss"
got: "Avss"
(compared using ==)
然后您可以修复您的 class 或方法,直到实现所需的行为。
我是 ruby 中 Rspec 测试的新手。我只是想编写一个简单的测试来查看下面的代码是否有效。我不知道该怎么做。代码 returns 给定字符串的首字母缩写词。谢谢
def acronym(sentence)
first_letters = []
sentence.split.each do |word|
first_letters << word[0]
end
first_letters.join
end
describe "acro method" do
it "returns acronym of words" do
end
end
使用 RSpec 匹配器来检查您的方法输出的内容是否与您期望的实际匹配。 https://relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
describe "acro method" do
it "returns acronym of words" do
test_sentence = "this is a test acronym"
expected_acronym = "tiata"
expect(acronym(test_sentence)).to eq(expected_acronym)
end
end
定义您的输入和预期输出
TDD 的重点是测试预期行为。要构建测试,您必须同时定义 fixture(已知输入值)和 expectation(您希望方法产生给定的输出一个已知的输入值)。然后,您将规范的结果与合适的匹配器进行比较。例如:
def acronym(sentence)
first_letters = []
sentence.split.each do |word|
first_letters << word[0]
end
first_letters.join
end
describe "#acronym" do
let(:sentence) { 'A very short sentence.' }
it "returns initial letter of each word" do
expect(acronym sentence).to eq('Avss')
end
end
当您运行文档格式的规范时,它应该读起来相当自然。
$ rspec --format doc foo_spec.rb #acronym returns initial letter of each word Finished in 0.0017 seconds (files took 0.12358 seconds to load) 1 example, 0 failures
如果您将测试的预期输出从 Avss
更改为 avss
,那么您的预期将会失败。一个写得很好的测试会给你一个有用的错误,比如:
Failures: 1) #acronym returns initial letter of each word Failure/Error: expect(acronym sentence).to eq('avss') expected: "avss" got: "Avss" (compared using ==)
然后您可以修复您的 class 或方法,直到实现所需的行为。