2013-03-20 48 views
0

一個Ajax請求,所以我有我的看法JavaScript方法是這樣的:RSpec的,水豚,並有欄杆

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" %> 

我在做什麼錯誤的觀點的簡化版本?我的測試失敗了,但它在瀏覽器中運行得很好。

回答

1

visit '/dashboard/RSF/pv'是做一個HTML請求,想要做一個JSON請求,請嘗試使用這個:

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

您也可以定義路由默認格式爲JSON在路由文件中,如果這一切都成爲向上。請參閱http://stackoverflow.com/questions/10681816/render-json-instead-of-html-as-default。 – 2013-03-20 22:48:58

+0

確切的說,我用於這個原因,我的路線通常具有相同的行動,但不同的訪問相同的名稱。 – Benj 2013-03-20 22:50:55

+0

@BenjaminSinclaire這沒有意義。該視圖是html,並且該方法在視圖中。這將如何適用?我想/儀表板/ RSF/PV做一個HTML請求,並測試該字段是否填充的方法。也許你的意思是我最好只是測試控制器的方法,而不是用水豚的javascript人羣... – thatmiddleway 2013-03-21 13:10:48