Я просмотрел несколько постов с той же проблемой, но все еще чувствую, что мое немного отличается.
viewing_categories_spec.rb
require 'rails_helper'
RSpec.feature 'Users can view categories' do
scenario 'with the category details' do
category = FactoryBot.create(:category, name: 'Real Estate')
visit '/categories'
click_link('Real Estate')
expect(page.current_url).to eq category_url(category)
end
end
category_factory.rb
FactoryBot.define do
factory :category do
name {"Computers"}
end
end
когда я запускаю rspec
, я получаю сообщение об ошибке:
Неудачи:
1) Пользователи могут просматривать категории с деталями категории
Ошибка / Ошибка: ссылка клика («Недвижимость»)
Capybara::Ambiguous:
Ambiguous match, found 2 elements matching visible link "Real Estate"
# ./spec/features/viewing_categories_spec.rb:8:in `block (2 levels) in <main>'
Затем я изменил спецификацию, добавив match: :first
:
require 'rails_helper'
RSpec.feature 'Users can view categories' do
scenario 'with the category details' do
category = FactoryBot.create(:category, name: 'Real Estate')
visit '/categories'
click_link('Real Estate', match: :first)
expect(page.current_url).to eq category_url(category)
end
end
На этот раз я получил ошибку:
Failures:
1) Users can view categories with the category details
Failure/Error: expect(page.current_url).to eq category_url(category)
expected: "http://www.example.com/categories/265"
got: "http://www.example.com/categories/17"
(compared using ==)
# ./spec/features/viewing_categories_spec.rb:9:in `block (2 levels) in <main>'
Я заметил, что иногда я не вижу ошибки, а иногда она появляется.
Единственное, что я вижу всегда, это "http://www.example.com/categories/17"
.
Эта часть остается неизменной всегда, когда я запускаю команду rspec
.
Полный исходный код здесь https://github.com/tenzan/kaganat