0

У меня есть тестовый сценарий:Несколько ожидает в рамках тестового сценария

scenario 'displays the form' do 
    # Build the setup for user coming from an external site. 
    expect(page).to have_selector('#braintree-dropin-frame', count: 1) 

    # User reloads the page 
    expect(page).to have_selector('#braintree-dropin-frame', count: 1) 

    # User visits page from within the website. 
    expect(page).to have_selector('#braintree-dropin-frame', count: 1) 
end 

Во-первых, это правильное использование тестового сценария? Я по существу тестирую одно и то же, но в разных сценариях. Я чувствую, что это действительно должно быть три отдельных сценария в блоке контекста. Я злоупотребляю scenario?

+0

вам может понадобиться добавить еще какой-нибудь контекст, например, как 'page'? – Kris

+0

'page' - это всего лишь html страницы. Я полагаю, это предоставлено Capybara. Моя основная проблема с этим тестом заключается в том, что я запускаю разные сценарии в рамках одного сценария. В то же время, я тестирую одно и то же: «На странице существует # braintree-dropin-frame?» – jason328

+0

Я не понимаю, как различается любой из трех тестов, а не тестирование одного и того же объекта на одной странице? – Kris

ответ

1

Если это не один поток пользователей, то они должны быть отдельными функциями/сценариями. Вы также должны быть осторожны при многократном определении ожиданий для одного и того же селектора в тесте, которое вы проверили, оно ушло между ними (если вы проверяете его снова), иначе вы можете пройти тесты, когда они должны " t из-за времени и асинхронного поведения.

Кроме того - поскольку вы проверяете для селектора CSS вы, вероятно, хотите использовать have_css, а не have_selector, так как он читает лучше и будет означать, что тесты продолжают работать, если тип селектора по умолчанию когда-либо изменен с помощью CSS

Смежные вопросы