Я создаю веб-приложение с 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
Если вы знаете более разумный способ исправить это, запишите его.