ruby-on-rails - 在 rspec rails 中放置长模拟/ stub 响应的位置

标签 ruby-on-rails rspec

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

我想提供应该从这个替身返回的响应。 但是这个响应是一个非常长的散列,我不想弄乱我的规范文件。 相反,我想将散列写在单独的文件中,并在我的规范中使用它 那么,什么是最佳实践?

最佳答案

最佳 做法是不要清除整个哈希。当然,您的测试不会要求每一行。您最好删除每个测试/上下文中每个测试需要的几行代码。

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

# spec/support/api_stub.rb

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

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

关于ruby-on-rails - 在 rspec rails 中放置长模拟/ stub 响应的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11779508/

相关文章:

ruby-on-rails - 在 docker 中播种 rails 应用程序以便它可以重复启动的正确方法是什么

javascript - 在 d3 javascript 中的圆形对象中添加图像?

javascript - 在 React 组件中删除 onClick 事件中的特定表格行

ruby-on-rails - 我无法更改或添加任何内容,sudo 无法正常工作...sudo : can't open/etc/sudoers: Permission denied

ruby-on-rails - Rspec 请求规范的空响应

ruby-on-rails - 为什么在 rspec 测试中创建并存储在数据库中的项目,但应用程序看不到它存储

ruby-on-rails - 如何使用 Ruby 2.7.0 修复 Rails 的警告消息

ruby-on-rails - ActiveJob 序列化 : no call to deserialize

ruby-on-rails - 在 rspec 中 stub 类级别常量

ruby - 链 should_receive 可能吗?