gpt4 book ai didi

ruby-on-rails - capybara 在不使用 sleep 的情况下等待 ajax

转载 作者:行者123 更新时间:2023-12-04 07:38:37 25 4
gpt4 key购买 nike

我正在使用 Capybara 2.x 对大型 Rails/AngularJS 应用程序进行一些集成测试,我遇到了一个测试,我需要睡一觉才能让它工作。

我的测试:

describe "#delete", js: true do
it "deletes a costing" do
costing = Costing.make!

visit "/api#/costings"
page.should have_content("General")

click_link "Delete" # Automatically skips the confirm box when in capybara

sleep 0.4
page.should_not have_content("General")
end
end

它测试的代码使用的是 ng-table,它需要瞬间更新,如果没有休眠,它将失败。 Capybara 曾经为此有一个 wait_until 方法,但它已被删除。我找到了这个网站:http://www.elabs.se/blog/53-why-wait_until-was-removed-from-capybara但无法获得任何推荐的替代方案来解决此问题。

这是我正在测试的代码。

  # --------------------------------------------------------------------------------
# Delete
# --------------------------------------------------------------------------------
$scope.destroy = (id) ->
Costing.delete (id: id), (response) -> # Success
$scope.tableParams.reload()
flash("notice", "Costing deleted", 2000)

这会更新 ng-table(tableParams 变量),也就是这段代码

  $scope.tableParams = new ngTableParams({
page: 1,
count: 10,
sorting: {name: 'asc'}
},{
total: 0,

getData: ($defer, params) ->
Costing.query {}, (data) ->
# Once successfully returned from the server with my data process it.
params.total(data.length)

# Filter
filteredData = (if params.filter then $filter('filter')(data, params.filter()) else data)

# Sort
orderedData = (if params.sorting then $filter('orderBy')(filteredData, params.orderBy()) else data)

# Paginate
$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()))
})

最佳答案

尝试将 Capybara.default_wait_time 增加到 3 秒或 4 秒。

如果失败,请尝试更改规范以在检查项目是否已从页面中删除之前查找 flash 通知消息。 (假设 Flash 消息在 HTML 正文中呈现)

describe "#delete", js: true do
it "deletes a costing" do
costing = Costing.make!

visit "/api#/costings"
page.should have_content("General")

click_link "Delete"

page.should have_content("Costing deleted")
page.should_not have_content("General")
end
end

编辑 - 删除了不正确的解释。

关于ruby-on-rails - capybara 在不使用 sleep 的情况下等待 ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22928334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com