Я тестирую своих помощников sinatra изолированно, помещая вспомогательные методы в свой собственный модуль.
Поскольку мое приложение sinatra немного больше обычного hello world , мне нужно разбить его на более мелкие части. Модуль для обычных помощников хорошо подходит для моего варианта использования.
Если вы пишете небольшую демонстрацию и определяете свои вспомогательные методы в блоке helpers { ... }
, я не думаю, что тестирование абсолютно необходимо. Любое приложение sinatra, находящееся в производстве, в любом случае может потребовать большей модульности.
# in helpers.rb
module Helpers
def safe_json(string)
string.to_s.gsub(/[&><']/) { |special| {'&' => '\u0026', '>' => '\u003E', '<' => '\u003C', "'" => '\u0027'}[special] }
end
end
# in app.rb
helpers do
include Helpers
end
# in spec/helpers_spec.rb
class TestHelper
include Helpers
end
describe 'Sinatra helpers' do
let(:helpers) { TestHelper.new }
it "should escape json to inject it as a html attribute"
helpers.safe_json("&><'").should eql('\u0026\u003E\u003C\u0027')
end
end