Ruby on rails RSpec、Capybara和带有rails的ajax请求

Ruby on rails RSpec、Capybara和带有rails的ajax请求,ruby-on-rails,ajax,rspec,capybara,poltergeist,Ruby On Rails,Ajax,Rspec,Capybara,Poltergeist,因此,在我的视图中,javascript方法如下所示: window.getWeatherData = function () { $.getJSON('/weather.json?building=RSF', function (response) { console.log(response) $('#dynamic-wrapper').show(); $('#weather-meridan').html(response.meridan); $('#relative-hum

因此,在我的视图中,javascript方法如下所示:

window.getWeatherData = function () {
$.getJSON('/weather.json?building=RSF', function (response) {
  console.log(response)
  $('#dynamic-wrapper').show();
  $('#weather-meridan').html(response.meridan);
  $('#relative-humidity').html(response.rh);
  $('#outside-temp').html(response.temperature);
  $('#windspeed').html(response.windspeed);
  // TODO still need to get wind direction!
}).error(function () {
  $('#dynamic-wrapper').hide();
});
}

getWeatherData();
天气是我应用程序中的控制器方法。我该如何去截取响应,这样当我运行测试时,它就可以工作了?以下是我的测试结果:

before :each do
  MeterMapsController.any_instance.stub(:weather).and_return(
    :json => {:temperature => 98.6, :rh => 100, :windspeed => 20}
  )
end

it 'shows relative humidity' do
  visit '/dashboard/RSF/pv'
  find('span#relative-humidity').should have_content '100% Outside Relative Humidity'
end
以下是位于
/dashboard/RSF/pv

<div class='current-data'>
<span id='weather-time' class='digi'></span><span id='weather-meridan'></span>
  <span id="dynamic-wrapper">
    <span id='relative-humidity' class='digi'></span>% Outside Relative Humidity <br />
    <span id='outside-temp' class='digi'></span>ºF
    <span id='windspeed' class='digi'></span> mph Wind Speed<%# out of %>
    <span id='wind-direction'></span>
  </span>
</div>
<%= javascript_include_tag "weather.js" %>

%室外相对湿度
华氏度 每小时风速

我做错了什么?我的测试失败,但它在浏览器中运行正常。

visit'/dashboard/RSF/pv'
正在执行HTML请求,如果要执行JSON请求,请尝试使用以下方法:

    get '/your/path', format: 'js'

您还可以在路由文件中将路由默认格式定义为JSON,如果它只提供了这些内容的话。请看。确切地说,我已经习惯了这一点,因为对于相同的操作,我的路由通常具有相同的名称,但访问不同。@BenjaminSinclaire这没有意义。视图是html,此方法位于视图中。这将如何适用?我希望/dashboard/RSF/pv执行一个html请求并测试该字段是否由该方法填充。也许你说我最好只是测试控制器方法,而不是用capybara测试javascript填充…@BenjaminSinclaire我为这个问题添加了更多信息。我意识到可能还不清楚我想做什么。