У вас есть две кодировки, чтобы позаботиться:
- кодировка ответа , объявленная в заголовке
Content-Type
,
- кодировка, в которой Ruby хранит тело ответа внутри
last_reponse.body
объекта.
Хорошее приложение Rack должно убедиться, что они синхронизированы и согласованы друг с другом, но некоторые компоненты промежуточного программного обеспечения или ошибки кодирования могут привести к их несоответствию. Таким образом, вы должны проверить оба.
Этот тест убедится, что строка тела закодирована в 'UTF-8'.
it "should be UTF-8 encoded" do
get '/'
last_response.body.encoding.name.should == 'UTF-8'
end
Здесь мы тестируем, как строка тела кодируется как объект Ruby.
(Пожалуйста, помните, что этот код будет работать только на Ruby 1.9.x.)
Вместо этого, если вы хотите проверить, объявил ли сервер тип контента UTF-8 для тела, вы должны использовать
it "should have UTF-8 content type" do
get '/'
last_response.content_type.should =~ /UTF-8/
end
В этом втором тесте мы проверяем, объявил ли сервер, что использует кодировку UTF-8, установив в заголовке Content-Type
что-то, содержащее UTF-8
.