如何用 rspec 和 rails 上的水豚测试 API?

How to test a API with rspec and capybara on rails?

我创建了一个控制器,可以通过特殊的 url 读取 api 数据。

def category
  @data = get_api_data(param1)
end

def get_api_data(param1)
  "http://my_api_url/param1=#{param1}"
end

创建视图后,我可以从浏览器中看到结果。

如果我使用 rspec + 水豚做功能测试

visit category_path('param1')

然后我想确认 api 数据将显示在视图中

expect(page).to have_field('name', with: 'aaa')

@data 值始终为空。为什么?是否有必要从测试代码中执行 api url 访问 post?如果需要,怎么办? visit 方法不能接受其他参数。

Capybara 不是为测试 API 而设计的。你应该选择 Rspec 和 Airborne:https://github.com/brooklynDev/airborne