pongo a prueba mis ayudantes Sinatra en forma aislada, poniendo el métodos de ayuda dentro de su propio módulo. Dado que mi aplicación sinatra es un poco más grande que el hola mundo ejemplo, tengo que dividirlo en partes más pequeñas. Un módulo para los ayudantes comunes se adapta bien a mi caso de uso.
Si escribe una demostración rápida, y define sus métodos de ayuda en el bloque helpers { ... }
, no creo que la prueba sea absolutamente necesaria. Cualquier aplicación de sinatra en producción, puede requerir más modularidad de todos modos.
# 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
De hecho, fui esa 'ruta', funciona bien: oP Gracias zed. – julien