1
在Rails咖啡腳本我有這個點擊處理程序:黃瓜測試問題,Ajax和JSON,甚至使用Ajax-等待解決辦法
:addProductToCartHandler =()->
$('#add_to_cart').click((event)->
$.ajax({
type: 'POST',
url: '/line_items.json'
data: {product_id:product_id}
success: (data)->
$('.carts_number_of_items').html(data.number_of_items)
$('#carts_explanation').effect("pulsate",{times:2}, 200)
error:()->
});
event.preventDefault()
return false
)
這個腳本通過阿賈克斯$下面的操作調用
def create
[...]
format.json{
@cart.save ?
(render json: {number_of_items:@cart.line_items.sum('quantity') }) :
(render json: { error: t("line_items.error") })
}
這可以計算購物車中物品的數量,並返回json結果。 這工作的瀏覽器中運行良好,但不與黃瓜測試:
@javascript
Scenario: Add a product to a cart via ajax control
And I follow "Cucumbers"
When I follow "Add To Cart"
And I wait for the ajax request to finish
Then I should see "1 item in your cart"
失敗與此報告:
然後我看到「1項在您的購物車」#特性/ step_definitions/web_steps .rb:24 預計將有內容在您的購物車中有1項內容[012] ExpectationNotMetError)
步驟「我等待Ajax請求完成」是:
When(/^I wait for the ajax request to finish$/) do
start_time = Time.now
page.evaluate_script('jQuery.isReady&&jQuery.active==0').
class.should_not eql(String)
until page.evaluate_script('jQuery.isReady&&jQuery.active==0') or
(start_time + 5.seconds) < Time.now do
sleep 1
end
end
有什麼建議?