【问题标题】:cucumber test problems with ajax and json even with ajax-wait-workaroundajax 和 json 的黄瓜测试问题,即使使用 ajax-wait-workaround
【发布时间】:2013-12-04 05:01:43
【问题描述】:

在 Rails 咖啡脚本中,我有这个点击处理程序:

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
   )

此脚本通过 $.ajax 调用以下操作:

def create
    [...]

    format.json{

         @cart.save ? 
               ( render json: {number_of_items:@cart.line_items.sum('quantity') } ) :
               ( render json: { error: t("line_items.error") } )

       }

计算购物车中的商品数量,并返回 json-result。 这在浏览器中运行良好,但不适用于黄瓜测试:

@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 件商品”#features/step_definitions/web_steps.rb:24 预计在 [...] 中会有内容“您的购物车中有 1 件商品” 您的购物车中有 0 件商品\n 查看您的购物车 [...]
(RSpec::Expectations::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

有什么建议吗?

【问题讨论】:

    标签: ajax json cucumber


    【解决方案1】:

    我相信你在 18 个月前就已经知道了,对于有类似问题的偷窥者的想法:

    • 由于某种原因出错(在这种情况下,您可以使用“save_and_open_page”检查内容或查看 page.driver.console_messages 以查看是否存在 JS 错误)
    • 耗时超过 5 秒(在这种情况下,您可以将 5.seconds 更改为更大的值以查看是否有效)
    • jQuery 别名不起作用? (我看到您正在使用 $ - jQuery.isReady&&jQuery.active==0 在您的控制台中返回吗?)

    你还记得那是什么吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-25
      • 2015-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多