在rspec rails中放置长模拟/存根响应的位置

时间:2012-08-02 14:24:26

标签: ruby-on-rails rspec

api = double "myApi"
api.should_receive(:get_info).and_return({
  # a 360 lines hash!
})

我想提供应该从此double返回的响应。 但是这个响应是非常长的哈希,我不想让我的spec文件混乱。 相反,我想在单独的文件中编写哈希,并在我的规范中使用它 那么,最佳实践是什么?

1 个答案:

答案 0 :(得分:4)

最好的做法是不要删除整个哈希。当然,你的测试不需要每一行。你最好在每个测试/上下文中删除每个测试所需的几行。

如果你必须存根整个api,你可以在spec/support中创建一个单独的模块:

# spec/support/api_stub.rb

module ApiStub
  def self.response
    {
      # hash
    }
  end
end

由于该文件夹中的任何内容都会自动包含在内,因此您可以在存根定义中使用ApiStub.response