您好! 我有一个rails api和一个主干上的前端。 我的api拨打外部api来获取一些资源。
我想对capybara中的完整应用进行集成测试。我正在使用网络模拟。
剪掉了我的spec_helper:
WebMock.disable_net_connect!(allow_localhost: true)
RSpec.configure do |config|
config.before(:each) do
stub_request(:get, "url.com/live/en/live/list.json").
with(headers: {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}).
to_return(status: 200, body: body, headers: {})
end
(...)
end
def body
"{\"version\":\"9\",\"sports\":[{\"id\":101,\"title\":\"Football\"},{\"id\":100,\"title\":\"Tenis\"}]}"
end
我的功能测试:
feature 'sports displayment' do
scenario 'user access to the site' do
visit root_path
expect(page).to have_text("Football")
end
end
显示的错误是expected to find text "Football" in ""
如果我在控制器上嵌入binding.pry它就不起作用(意味着它没有通过它。
我确信该应用有效,所以这是一个测试问题。
指向应用https://github.com/gerard-morera/bet_play
的链接------- ------- EDIT
我一直在尝试一些合理的新事物,但仍然无效。
我添加了selenium,因为默认的capybara潜水员不支持js,我添加了wait_for_ajax
,一个方法,以确保capybara正在等待ajax请求,我也为此场景启用了js:
require 'rails_helper'
feature 'sports displayment' do
before(:all) do
Capybara.current_driver = :selenium
end
scenario 'user access to the site', js: true do
visit '/'
wait_for_ajax
expect(page).to have_text("Football")
end
end
答案 0 :(得分:0)
你应该试试
expect(page).to have_content("Football")