Определите ваш ввод и ожидаемый вывод
Смысл TDD - проверить ожидаемое поведение .Чтобы построить тест, вы должны определить как fixture (известное входное значение), так и ваше ожидание (результат, который вы ожидаете, что ваш метод выдаст заданное входное значение).Затем вы сравниваете результаты вашей спецификации с подходящим сопоставителем.Например:
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 ==)
Затем вы можете исправить свой класс или метод, пока не будет достигнуто желаемое поведение.