Tôi đã có một lớp, đó là cơ sở của một số lớp khác chuyên về các hành vi:kiểm tra đơn giản STI với FactoryGirl
class Task < ActiveRecord::Base
attr_accessible :type, :name, :command
validates_presence_of :type, :name, :command
# some methods I would like to test
end
Lớp CounterTask thừa hưởng từ công tác
class CounterTask < Task
end
này tất cả các công trình tốt cho đến khi tôi đang cố gắng kiểm tra lớp cơ sở, vì nó phải có một loại.
FactoryGirl.define do
factory :task do
sequence(:name) { |n| "name_#{n}" }
sequence(:command) { |n| "command_#{n}" }
end
end
Làm cách nào bạn kiểm tra chức năng cơ bản của lớp cha?
Bạn không nên viết bài kiểm tra để kiểm tra chức năng, thay vì triển khai? Trong trường hợp này có nghĩa là bạn sẽ kiểm tra xem 'CounterTask' có các thuộc tính và những thứ khác mà nó nhận được từ' Task' hay không. Nếu bạn thay đổi việc triển khai, ví dụ như không sử dụng STI nữa. Thử nghiệm của bạn vẫn có thể thành công nếu 'CounterTask' của bạn giữ nguyên hành vi tương tự. – Arjan
Đó là một điểm tốt. Tôi chỉ nghĩ rằng tôi sẽ tiết kiệm một số bản sao trong thử nghiệm nếu tôi lần đầu tiên kiểm tra các chức năng cơ bản và sau đó các lớp học trẻ em ... Có lẽ đây có thể là giải pháp cho vấn đề của tôi. – Mark