before do content_type "text/html", :charset => "utf-8" end
in my sinatra app.
How can I check if this works in my
I though it should be something like:
it "should be utf-8 encoded" do get '/' last_response.body.encoding.should == 'utf-8' end
encoding does not return a string.
You have two encoding to take care:
- the encoding of the response declared in the
- the encoding in which Ruby has stored the response body inside the
A good Rack application should make sure that the two are kept in sync and are coherent with each other, but some middleware component or coding error could make them mismatch them. So you have to test both.
This test will make sure that the body string is encoded in 'UTF-8'.
it "should be UTF-8 encoded" do get '/' last_response.body.encoding.name.should == 'UTF-8' end
Here we are testing how the body string is encoded as Ruby object.
(Please beware that code this will work only on Ruby 1.9.x.)
Instead, if you want to test whether the server has declared an UTF-8 content type for the body, you should use
it "should have UTF-8 content type" do get '/' last_response.content_type.should =~ /UTF-8/ end
In this second test we check whether the server declared that it is using the UTF-8 encoding setting the
Content-Type header to something that contains