@Diesel-nick

RSpec Rails — почему в features проверяются не все тесты?

Пробую тестировать Rails приложение через RSpec с использованием синтаксиса, рекомендованного на этих ресурсах:
https://relishapp.com/rspec/rspec-rails/v/3-2/docs...
betterspecs.org/ru

Написал такой спек для тестирования main pages:
spec/features/main_pages_spec.rb
require 'rails_helper'

RSpec.describe "main pages", type: :features do

  scenario "root page" do
    visit root_path

    expect(page).to have_link("Login", href: login_path(locale: I18n.locale))
    expect(page).to have_link("Signup", href: signup_path(locale: I18n.locale))
  end
end


Но при запуске тестируется только первый expect
bundle exec rspec spec/features/main_pages_spec.rb
Run options: include {:focus=>true}

All examples were filtered out; ignoring {:focus=>true}

Randomized with seed 47521

main pages
  root page

Top 1 slowest examples (1.4 seconds, 99.9% of total time):
  main pages root page
    1.4 seconds ./spec/features/main_pages_spec.rb:8

Finished in 1.4 seconds (files took 4.58 seconds to load)
1 example, 0 failures


Это мои гемы приложения
gem 'rails', '~> 4.2', '>= 4.2.5'
gem 'rspec-rails', '~> 3.3'
gem 'capybara', '~> 2.5'
gem 'minitest'
gem 'selenium-webdriver', '~> 2.48'


Почему тестируется только первый expect?
  • Вопрос задан
  • 361 просмотр
Решения вопроса 2
Проходят оба expect. В feature тестах scenario является синонимом it из обычных тестов.
Если rspec выдал в логи, что тест прошёл, значит выполнилось всё, что в нём написано.
Чтобы убедиться в этом, попробуйте выполнить следующий код

scenario "root page" do
  visit root_path

  puts 'A'
  expect(page).to have_link("Login", href: login_path(locale: I18n.locale))
  puts 'B'
  expect(page).to have_link("Signup", href: signup_path(locale: I18n.locale))
  puts 'C'
end
Ответ написан
Один scenario блок это и есть один тест
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы