ruby-on-rails - 使用 Rspec 执行 Web 请求时的存根控制器方法
问题描述
如何存根发出请求时发生的控制器方法或辅助方法?
我有一个发出网络请求的测试。请求发送到控制器,该控制器也调用辅助方法。在下面的示例中,我想service_config
为我的测试目的存根返回值,因为service_config
它来自AdminsHelper
并执行对服务的实际 API 请求。
我对 Rspec 和这些类型的测试实践有点陌生,所以我在正确测试这个 Web 请求时也可能走错路
测试:
context 'when an invalid parameter is specified' do
it 'should return a hash of size 0' do
get '/admins/configs/poop'
json = JSON.parse(response.body)
expect(json).to be == ({})
end
end
控制器:
class AdminsController < ApplicationController
include AdminsHelper
def configs
response = service_config
render json: response, status: 200
end
end
解决方案
我希望RSpecs 任何实例模拟在这种情况下都会起作用。
context 'when an invalid parameter is specified' do
it 'should return a hash of size 0' do
allow_any_instance_of(AdminsController).to receive(:service_config).and_return({})
get '/admins/configs/poop'
json = JSON.parse(response.body)
expect(json).to eq({})
end
结尾
推荐阅读
- google-admin-sdk - 使用GET chromeosdevices方法时,返回的资源中是否返回了自定义字段?
- php - laravel:防止返回 null 的查询
- javascript - 如何使用 eventListener 在 javaScript 中停止 setInterval 计时器?
- pip - 如何为 pip 设置超时,以便我可以在不可靠的 Internet 连接上下载包?
- c# - Guid.NewGuid() 在 Parallel.For 循环中使用时返回重复值
- ios - SwiftUI:将动态数据传递给内容视图后重绘
- keycloak - 钥匙斗篷模拟
- ios - 如何设置/更改 CGImage 上的 alphaInfo?
- reactjs - React 项目无法在 git 子模块中使用节点模块
- tensorflow - 为什么 SSD 在数据增强期间会调整随机作物的大小?