2013-06-14 3 views
0

У меня есть модель, которую я расширил, лучший способ проверить как оригинальный, так и расширенный класс? В настоящее время я просто тестирую модель Dataset. Есть ли способ включить тесты Datasets в разделе? Или я просто пишу тесты для чего-либо, добавленного в раздел?RSpec - Как протестировать расширенные классы

Заранее спасибо.

Модели

class Dataset < ActiveRecord::Base 
    validates :name, presence: true 
    # ... 
end 

class Section < Dataset 
    # ... 
end 

Spec

describe Dataset do 
    it "should have a valid name" do 
    should validate_presence_of(:name) 
    end 
    # ... 
end 
+0

Я спецификацию родителей и спецификацию ребенок действительно ребенок – apneadiving

+0

раздел спецификация должна охватывать только свой раздел класса. Вы бы не тестировали ActiveRecord в спецификации вашего набора данных, не так ли? – Stefan

ответ

3

Я думаю, что лучше всего иметь один набор тестов для родительского класса, а также отдельный набор тестов для любой дополнительной поведение, которое добавляет дочерний класс. Тестирование общего поведения в отдельных тестах для каждого класса было бы излишним и сложным в обслуживании. И в том числе родительские тесты в тестах ребенка не должны быть нужны - как только он будет протестирован, он будет протестирован.

+1

не существует опасности того, что дочерний класс неожиданно нарушит поведение родительского класса? похоже, было бы неплохо иметь быстрый способ повторного запуска всех тестов родительского класса в дочернем классе ... –

1

Сначала это не расширенный класс, а унаследованный класс.

Если в подклассе есть что-то особенное, новый метод или переписывание, просто проверьте его отдельно. Если ничего нового, тестового родительского класса достаточно.

Смежные вопросы