我无法为我想编写的方法提出一些测试。
该方法将获取一些数据的散列并用它创建一堆关联的模型。问题是,我很难弄清楚编写此类测试的最佳实践是什么。
例如,代码将:
取一个看起来像这样的哈希:
{
:department => 'CS',
:course_title => 'Algorithms',
:section_number => '01B'
:term => 'Fall 2012',
:instructor => 'Bob Dylan'
}
并将其保存到模型Department
、Course
、Section
和Instructor
.
这将需要多次调用model.find_or_create
,等等。
我怎么能去测试这个方法的每个单独的目的,例如:
it 'should find or create department' do
# << Way too many stubs here for each model and all association calls
dept = mock_model(Department)
Department.should_receive(:find_or_create).with(:name => 'CS').and_return(dept)
end
有没有办法避免大量存根以保持每个测试的优先级(快速独立可重复自检及时)?有没有更好的方法来编写这个方法和/或这些测试?我真的更喜欢短而干净的it
积木。
非常感谢您的帮助。
编辑:该方法可能如下所示:
def handle_course_submission(param_hash)
department = Department.find_or_create(:name => param_hash[:department])
course = Course.find_or_create(:title => param_hash[:course_title])
instructor = Instructor.find_or_create(:name => param_hash[:instructor])
section = Section.find_or_create(:number => param_hash[:section_number], :term => param_hash[:term])
# Maybe put this stuff in a different method?
course.department = department
section.course = course
section.instructor = instructor
end
有没有更好的方法来编写方法?我将如何编写测试?谢谢!