Поскольку параметр запроса включает local, указывающий язык, все тесты с использованием вспомогательных методов (например, user_path, usre_url) завершатся ошибкой. - PullRequest
0 голосов
/ 08 мая 2020

Я создаю веб-приложение с Ruby на Rails.

Недавно я сделал интернационализацию приложения. Если URL-адрес имеет параметр запроса locale=en, все тексты в приложении будут на английском языке sh.

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

test "should access all links" do

    :

    get root_path
    assert_select "a[href=?]", root_path, count: 2
    assert_select "a[href=?]", help_path

    assert_select "a[href=?]", users_path
    assert_select "a[href=?]", user_path(@user)
    assert_select "a[href=?]", edit_user_path(@user)
    assert_select "a[href=?]", logout_path

    :
end

Однако, поскольку я сделал приложение интернационализированным, все тесты не пройдут, потому что URL-адреса имеют locale=en по умолчанию.

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

test "should access all links" do

    :

    get root_path
    assert_select "a[href=?]", "/locale=en", count: 2
    assert_select "a[href=?]", "/help?locale=en"

    assert_select "a[href=?]", "/users?locale=en"
    assert_select "a[href=?]", "/users/#{@user}?locale=en" user_path(@user)
    assert_select "a[href=?]", "/users/#{@user}/edit?locale=en"
    assert_select "a[href=?]", "/logout?locale=en"

    :
end

Если вы знаете более разумный способ исправить это, запишите его.

1 Ответ

0 голосов
/ 08 мая 2020

Я бы go за что-то вроде:

    assert_select "a[href=?]", root_path(locale: en), count: 2
    assert_select "a[href=?]", help_path(locale: en)

    assert_select "a[href=?]", users_path(locale: en)
    assert_select "a[href=?]", user_path(@user, locale: en)
    assert_select "a[href=?]", edit_user_path(@user, locale: en)
    assert_select "a[href=?]", logout_path(locale: en)
...