Учебное пособие по Rails (3-е изд.) Интеграционные тесты не выполняются из-за недопустимого селектора css (c9.io?)

Я изучаю Учебник по Rails (используя среду cloud9) (3-е издание https://www.railstutorial.org/book/), и я столкнулся с чем-то странным.

Я только что закончил главу 7 и только сейчас заметил, что некоторые из моих утверждений из главы 5 не выполняются, потому что «Утверждение не было запущено из-за недопустимого селектора CSS».

Вот содержимое моего файла test/integration/site_layout_test.rb

require 'test_helper'

class SiteLayoutTest < ActionDispatch::IntegrationTest
  test "layout links" do
    get root_path
    assert_template 'static_pages/home'
    assert_select "a[href=?", root_path, count: 2
    assert_select "a[href=?", help_path
    assert_select "a[href=?", about_path
    assert_select "a[href=?", contact_path
    assert_select "a[href=?", signup_path
  end
end

Кажется, это символ для совпадения символов с кодом, найденным в https://github.com/mhartl/sample_app_3rd_edition/blob/master/test/integration/site_layout_test.rb

ошибки, которые я получаю, следующие

DEPRECATION WARNING: The assertion was not run because of an invalid css selector.=======                                           ] 66% Time: 00:00:00,  ETA: 00:00:00
unexpected '$' after '[:equal, "\"/\""]' (called from block in <class:SiteLayoutTest> at /home/ubuntu/workspace/sample_app/test/integration/site_layout_test.rb:7)
DEPRECATION WARNING: The assertion was not run because of an invalid css selector.
unexpected '$' after '[:equal, "\"/help\""]' (called from block in <class:SiteLayoutTest> at /home/ubuntu/workspace/sample_app/test/integration/site_layout_test.rb:8)
DEPRECATION WARNING: The assertion was not run because of an invalid css selector.
unexpected '$' after '[:equal, "\"/about\""]' (called from block in <class:SiteLayoutTest> at /home/ubuntu/workspace/sample_app/test/integration/site_layout_test.rb:9)
DEPRECATION WARNING: The assertion was not run because of an invalid css selector.
unexpected '$' after '[:equal, "\"/contact\""]' (called from block in <class:SiteLayoutTest> at /home/ubuntu/workspace/sample_app/test/integration/site_layout_test.rb:10)
DEPRECATION WARNING: The assertion was not run because of an invalid css selector.
unexpected '$' after '[:equal, "\"/signup\""]' (called from block in <class:SiteLayoutTest> at /home/ubuntu/workspace/sample_app/test/integration/site_layout_test.rb:11)

Что мне кажется действительно интересным, так это то, что если я удалю весь контент из своих таблиц стилей, я все равно буду получать те же ошибки.

Я понятия не имею, где термин «about_path» (или любой другой символ пути) берет $ char.

Я пропустил что-то очевидное, я не могу найти никаких ссылок, когда я гуглю текст предупреждения, который помогает мне отслеживать вещи.


person Malcolm Anderson    schedule 29.01.2015    source источник


Ответы (1)


В ваших аргументах a[href] отсутствуют закрывающие квадратные скобки. Ваш код должен быть следующим:

require 'test_helper'

class SiteLayoutTest < ActionDispatch::IntegrationTest
  test "layout links" do
    get root_path
    assert_template 'static_pages/home'
    assert_select "a[href=?]", root_path, count: 2
    assert_select "a[href=?]", help_path
    assert_select "a[href=?]", about_path
    assert_select "a[href=?]", contact_path
    assert_select "a[href=?]", signup_path
  end                      
end
person trosborn    schedule 29.01.2015
comment
Точно моя проблема. Я смотрел на этот код не менее 15 минут и думал, что делаю символ путем сравнения символов. - person Malcolm Anderson; 03.02.2015