【问题标题】:RSpec, Capybara and an ajax request with railsRSpec、Capybara 和带有 rails 的 ajax 请求
【发布时间】:2013-03-10 06:57:00
【问题描述】:

所以我的视图中有 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" %>

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

【问题讨论】:

    标签: ruby-on-rails ajax rspec capybara poltergeist


    【解决方案1】:

    visit '/dashboard/RSF/pv' 正在执行 HTML 请求,您想要执行 JSON 请求,请尝试改用:

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

    【讨论】:

    • 您还可以在路由文件中将路由默认格式定义为 JSON,如果仅此而已。见stackoverflow.com/questions/10681816/…
    • 没错,我已经习惯了这个原因,因为我的路线经常对相同的操作具有相同的名称,但访问权限不同。
    • @BenjaminSinclaire 这没有意义。视图是html,这个方法在视图中。这将如何应用?我希望 /dashboard/RSF/pv 执行 html 请求并测试该字段是否由该方法填充。也许你说我最好只测试控制器方法而不是用 capybara 测试 javascript 人口......
    • @BenjaminSinclaire 我在问题中添加了更多信息。我意识到我可能不清楚我想要做什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多