visit "/whatever"
expect(page).to have_no_content "This is loaded in asynchronously"
Это должно потерпеть неудачу, но пройдет. Зачем? Когда первая страница загружается, содержимого там нет, и Capybara разумно этого не ждет.Capybara: проверьте, что содержимое, загруженное ajax, отсутствует
Что такое благословенный способ дождаться этого контента, теперь, когда Capybara 2.0 объявила wait_until
плохие новости?
На этой странице объясняется, почему wait_until был обесценен: http://www.elabs.se/blog/53-why-wait_until-was-removed-from-capybara, так что с учетом того, что методы page.should not_have теперь будут использовать capybara время ожидания эффективно. Первый пример chadoh - это мой голос по поводу того, что я должен работать с ajax, а второй - хорошо, мое правило - никогда не использовать метод сна. Это надежный способ сделать ваши тесты медленными. – Dono
Страницы ждут, если в настоящее время присутствует контент, который вы утверждаете не должен, или если есть контент, который отсутствует, который вы утверждаете, должен быть. Но если вы утверждаете, что контента нет, и это не так, он перестает ждать. Он не ждет, чтобы проверить, что содержимое не загружается через ajax. Но в этом случае мне это нужно. – chadoh
А теперь я получаю то, чего вы пытаетесь достичь. Попробуйте эту ссылку http://www.natontesting.com/2012/02/27/a-solution-to-ajax-errors-with-capybara-against-a-jquery-site/. В зависимости от вашей версии capybara вам может потребоваться отменить wait_until. Таким образом, ваш шаг может дождаться завершения ajax, а затем утвердить. – Dono