Так много для этого простого вопроса, но я просто хотел выделить новую функцию на Java, которая позволит избежать всех путаниц в индексировании в массивах даже для новичков. Java-8 абстрагировал задачу итерации для вас.
int[] array = new int[5];
//If you need just the items
Arrays.stream(array).forEach(item -> { println(item); });
//If you need the index as well
IntStream.range(0, array.length).forEach(index -> { println(array[index]); })
В чем польза? Ну, с одной стороны, это читаемость, как английский. Во-вторых, вам не нужно беспокоиться о ArrayIndexOutOfBoundsException
Это невозможно напрямую с Capybara, поскольку на самом деле он не знает о переходах страниц / запросах, которые происходят в браузере, если они специально не инициированы пользователем с помощью visit
.
Потенциальный способ сделать то, что вы хотите, будет использовать программируемый прокси, например puffing-billy для обработки каждого запроса тестируемого приложения. Если вы используете puffing-billy
, вам нужно посмотреть на функцию pass_request
- https://github.com/oesmith/puffing-billy#in-your-tests-capybarawatir - направить по первому запросу, а затем сделайте все, что хотите, с ответом.
Я не стал бы путать тесты capybara с HTML-линией. В данный момент это может показаться умным, так как вы получаете список URL-адресов для проверки бесплатно с каждым тестом, но:
У вас, вероятно, есть что-то вроде sitemap.xml или другого источники всех доступных URL-адресов. Я бы использовал его, чтобы сделать отдельную проверку, которая будет простой: запросите URL-адрес, напишите ответ. Прополощите и повторите.
Если вы все еще не уверены, попробуйте использовать page.html
и сделайте это как
expect(page.html).to pass_linter
https://github.com/teamcapybara/capybara# debugging
Затем вы можете добавить его в качестве around
для каждой спецификации type: :feature
.
ИЗМЕНИТЬ: вот еще одно обходное решение, чтобы иметь каждый посещенный путь. Просто проанализируйте файл журнала сервера (например, этот cat log/devlopment.log | grep path
), чтобы получить полный список, если посетили пути:
method=POST path=/users/login format=html controller=SessionsController action=create
status=302 duration=256.82 view=0.00 db=52.29 location=http://0.0.0.0:3000/platform/admin/dashboard params={"utf8"=>"✓", "authenticity_token"=>"ubGnWKOq8gbUE5C/aK375QQn5DpjHarUYxHtBLglGe6Lr9Ie3O5XPq90k5gr/SZbIPoDiiasvY0mGlwhzD/MsQ==", "user"=>{"email"=>"alex-3d51048235c9d1a8@toptal.io", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"} uid=983 remote_ip=127.0.0.1 x_forwarded_for= x_request_id=
method=GET path=/admin/dashboard format=html controller=XXX action=show status=200 duration=3285.54 view=1051.32 db=2016.87 params={} uid=983 remote_ip=127.0.0.1 x_forwarded_for= x_request_id=
и использовать его для литинга.
page.html
(см. Мой обновленный ответ)
– meta
13 July 2018 в 14:42