2015-03-11 3 views
1

Синтаксис expect(page).to have_content является законным в соответствии с capybara docs, но это не похоже на работуожидать (страница) .то have_content не работает

Я добавил файл спецификаций и ошибку ниже

require 'spec_helper.rb' 

feature "Looking up recipes", js: true do 
    before do 
    Recipe.create!(name: 'Baked Potato w/ Cheese') 
    Recipe.create!(name: 'Garlic Mashed Potatoes') 
    Recipe.create!(name: 'Potatoes Au Gratin') 
    Recipe.create!(name: 'Baked Brussel Sprouts') 
    end 

    scenario "finding recipes" do 
    visit '/' 
    fill_in "keywords", with: "baked" 
    click_on "Search" 

    expect(page).to have_content("Baked Potato") 
    expect(page).to have_content("Baked Brussel Sprouts") 
    end 
end 

Ошибка при выполнении спецификации:

[email protected]:~/rails_apps/receta$ rspec spec/features/search_spec.rb 
F 
Failures: 

1) Looking up recipes finding recipes 
Failure/Error: expect(page).to have_content("Baked Potato") 
    only the `receive` matcher is supported with `expect(...).to`, but you have provided: #<Capybara::RSpecMatchers::HaveText:0x000000057c0470> 
# ./spec/features/search_spec.rb:15:in `block (2 levels) in <top (required)>' 

Finished in 9.95 seconds 
1 example, 1 failure 

Failed examples: 

rspec ./spec/features/search_spec.rb:10 # Looking up recipes finding recipes 

Randomized with seed 31312 

Эти версии различных Rspec драгоценных камней

  • RSpec (2.99.0)
  • RSpec-collection_matchers (1.1.2)
  • RSpec сердечником (2.99.2)
  • RSpec-ожидания (2.99.2)
  • RSpec-Mocks (2.99.3)
  • RSpec рельсы (2.99.0)

из водосвинки пробную является водосвинка (2.4.4)

ответ

1

Вы используете неправильную версию RSpec для этого синтаксиса. Использование expect(...).to ... является принятым способом написания тестов в RSpec 3+. Вы используете 2.99.

Ваш синтаксис

page.should have_content("Baked Potato") 

Вы должны действительно обновить RSpec.

+0

Хм, сделал небольшое исследование и обнаружил, что 'ожидать' следует поддерживать начиная с версии 2.11 ([здесь] (https://github.com/rspec/rspec-expectations/blob/master/Should.md#unification -of-блок-и-значение-синтаксисы)). Начиная с версии v3 будет предупреждение об утомлении, и план состоит в том, чтобы отключить его по умолчанию в v4 ([здесь] (https://relishapp.com/rspec/rspec-expectations/docs/syntax-configuration)). Или я понял, что вы неправы? –

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