如何在rails上使用rspec和capybara测试API?

s-c*_*o-m 6 ruby api rspec ruby-on-rails capybara

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

def category
  @data = get_api_data(param1)
end

def get_api_data(param1)
  "http://my_api_url/param1=#{param1}"
end
Run Code Online (Sandbox Code Playgroud)

创建视图后,我可以看到浏览器的结果.

如果我使用rspec + capybara进行功能测试

visit category_path('param1')
Run Code Online (Sandbox Code Playgroud)

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

expect(page).to have_field('name', with: 'aaa')
Run Code Online (Sandbox Code Playgroud)

@data值始终为null.为什么?是否有必要从测试代码中获取api url访问帖?如果有必要,该怎么办?该visit方法不能采取其他参数.

Ric*_*cif 5

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