Как я могу протестировать блоки помощников в Sinatra, с помощью Rspec?

Я пишу sinatra приложение и тестирую его с rspec и стойкой/тестом (как описано на sinatrarb.com).
Это было большим до сих пор, пока я не переместил некоторый довольно процессуальный кодекс от своих объектов области до sinatra помощников.

С тех пор я пытался выяснить, как протестировать их в изоляции?

14
задан julien 21 May 2010 в 00:24
поделиться

3 ответа

возможно, это может вам как-то помочь http://japhr.blogspot.com/2009/03/sinatra-innards-deletgator.html

2
ответ дан 1 December 2019 в 12:38
поделиться

На самом деле вам не нужно делать:

helpers do
  include FooBar
end

Так как вы можете просто вызвать

helpers FooBar

Метод helpers принимает список модулей для смешивания и необязательный блок, который вычисляется в классе: https://github.com/sinatra/sinatra/blob/75d74a413a36ca2b29beb3723826f48b8f227ea4/lib/sinatra/base.rb#L920-L923

6
ответ дан 1 December 2019 в 12:38
поделиться

Я также пробовал вот это (которое нужно немного почистить, чтобы использовать повторно), чтобы изолировать каждого помощника в его собственной среде для тестирования:

class SinatraSim
  def initialize
    ...set up object here...
  end
end

def helpers(&block)
  SinatraSim.class_eval(&block)
end

require 'my/helper/definition' # defines my_helper

describe SinatraSim do
  subject { SinatraSim.new(setup) }

  it "should do something"
    subject.expects(:erb).with(:a_template_to_render) # mocha mocking
    subject.my_helper(something).should == "something else"
  end
end
0
ответ дан 1 December 2019 в 12:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: