2014-02-21 1 views
0

Я успешно интегрировал rspec gem .. некоторые из моих tets, связанных с переадресацией pass тоже. Но когда я использую have_tag or have_text or have_selector, ничего из этого не работает ... Я добавил render_views поверх моего спецификационного файла контроллера, все же получаю ошибку:Как утверждать элементы на странице с помощью rspec?

Capybara expection not met !!!!

Что я должен делать, чтобы утверждать/проверять элемент на странице, перенаправленной на навигацию после какого-либо действия в моем тесте ???

Ошибка:

 Failure/Error: response.body.should have_selector(:xpath, "//*[@id='header' 
]/h2") 
    Capybara::ExpectationNotMet: 
     expected to find xpath "//*[@id='header']/h2" but there were no matches 
    # ./spec/controllers/account_controller_spec.rb:11:in `block (3 levels) in 
<top (required)>' 

Тест:

describe AccountController do 
    render_views 

    describe "GET 'index'" do 

    it "should redirect to /users/sign_in" do 
     get 'welcome' 
     #response.should redirect_to("https://stackoverflow.com/users/sign_in") 
     response.body.should have_selector(:xpath, "//*[@id='header']/h2") 
    end 
---- some more tests--- 

Update: добавили эту spec_helper.rb, до сих пор не повезло!

config.include Capybara::DSL 

ответ

0

Все matchers как have_selector, have_tag, have_text начал работать после того, как я добавил следующее spec_helper.rb

config.include Capybara::RSpecMatchers 
2

Целью испытаний контроллера является проверка поведения контроллера. Как описано в https://www.relishapp.com/rspec/rspec-rails/docs/controller-specs:

It allows you to simulate a single http request in each example, and then specify expected outcomes such as:

  • rendered templates
  • redirects
  • instance variables assigned in the controller to be shared with the view
  • cookies sent back with the response

содержание Тестирование на странице, что контроллер перенаправил вас просто не в рамках таких испытаний. Так же, как он не отображает представления по умолчанию, он не перемещается по перенаправленным страницам.

Чтобы проверить содержимое на странице, на которую вы были перенаправлены, вы можете использовать спецификацию функции или, если вы не хотите использовать Capybara, спецификацию запроса.

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