BDD/TDD (세계 기뻐함, 나는 알고있다)의 실습을 배우기 시작했다. 이 시점에서 제가 고심하는 것 중 하나는 테스트가 실제로 가치가있는 테스트입니다. 내가 가진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을 테스트하는 가치 것은 아닌 빈을 반환 값?
- 이름이 지정되지 않은 경우 모델이 유효하지 않은지 확인하는 테스트는 어떻습니까?
- 유효한 레코드가 만들어지고 유효성 검사 오류가 없는지 확인하는 테스트는 어떻습니까?
나는 계속할 수있다. 이상적으로, 나는 나의 테스트 노력을 인도하기 위해 따라야 할 몇 가지 단호하고 빠른 규칙이있을 것이다. 그러나 나는 이것이 경험과 좋은 ole '실용주의와 함께 오는 것을 짐작하고있다. 필자는 레일 코어와 같은 몇몇 보석의 소스 코드를 통해 테스트 할 가치가있는 것과 그렇지 않은 것을 더 잘 이해할 수있는 방법에 대해 생각해 보았습니다.
테스터에게 도움이 될 수있는 조언이 있습니까?
+1 유닛 테스트를 통해 소유하고 있지 않은 코드는 테스트하지 마십시오. – Gishu