我目前正在一个大型应用程序中从 rails 2 迁移到 rails 3。在我们的功能规范中,我们有很多这样的东西:
@model = Factory :model
@child = Factory :child
Model.stub!(:find).and_return(@model)
Child.stub!(:find).and_return(@child)
...
@child.should_receive(:method).twice
主要问题是,如果我让它命中 DB 并获得子的实际实例,真实的 :method 会使测试过于复杂(需要两个大工厂)并且速度很慢。
在代码中,我们使用各种方法来获取项目:查找、动态查找器等
@model = Model.find(1)
@child = @model.children.find_by_name(name)
您如何建议将此逻辑移至 Rails 3?对另一个存根/模拟库有什么建议吗?