큰 Rails/AngularJS 앱에 대한 일부 통합 테스트에 Capybara 2.x를 사용하고 있습니다. 테스트를 통해 잠깐 만요.수면을 사용하지 않고 아약스를 기다리는 capybara
내 시험 :
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 테이블을 사용하는 테스트 코드는, 수면없이 실패합니다. 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 테이블이 코드를입니다 (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()))
})
여전히 should_not 테스트가 중단되면 플래시 메시지 테스트를 통과합니다. 또한 기본 대기 시간을 5 초로 늘리려고했지만 도움이되지 않았습니다. 나는 아직도 잠을 자야 해. – map7