Я только начинаю изучать практику BDD/TDD (мир радуется, я знаю). Одной из вещей, с которой я борюсь, на данный момент является то, что тесты на самом деле стоит писать. Давайте рассмотрим каждый из набора тестов, которые я начал для модели под названием Sport:Начало работы с BDD/TDD (Rails/Rspec)
Factory.define :sport do |f|
f.name 'baseball'
end
require 'spec_helper'
describe Sport do
before(:each) do
@sport_unsaved = Factory.build(:sport) # returns an unsaved object
@sport_saved = Factory.create(:sport) # returns a saved object
end
# Schema testing.
it { should have_db_column(:name).of_type(:string) }
it { should have_db_column(:created_at).of_type(:datetime) }
it { should have_db_column(:updated_at).of_type(:datetime) }
# Index testing.
# Associations testing.
it { should have_many(:leagues) }
# Validations testing.
it 'should only accept unique names' do
@sport_unsaved.should validate_uniqueness_of(:name)
end
it { should validate_presence_of(:name) }
it 'should allow valid values for name' do
Sport::NAMES.each do |v|
should allow_value(v).for(:name)
end
end
it 'should not allow invalid values for name' do
%w(swimming Hockey).each do |v|
should_not allow_value(v).for(:name)
end
end
# Methods testing.
end
Несколько конкретных вопросов, которые у меня есть:
- Стоит ли испытывать, что ассоциация sport.leagues возвращает непустой стоимость?
- Как насчет теста, который гарантирует, что модель недействительна, если имя не указано?
- Как насчет теста, чтобы убедиться, что создана действительная запись и нет ошибок проверки?
Я мог бы продолжать. В идеале, были бы какие-то жесткие и быстрые правила, которые я мог бы выполнить, чтобы направлять мои усилия по тестированию. Но я предполагаю, что это связано с опытом и хорошим оле-прагматизмом. Я думал о чтении через исходный код нескольких драгоценных камней, таких как ядро рельсов, чтобы лучше понять, что стоит тестировать, а что нет.
Любые советы, которые вы испытали, могут предложить тестеры?
+1 не проверяйте код, который у вас нет, с помощью модульных испытаний. – Gishu