2010-11-25 2 views
2

В моем приложении rails существует вспомогательный контроллер, который является модулем (а не классом) с множеством вспомогательных методов, определенных в нем. Я хочу написать блок-тесты для этого, прежде чем выполнять рефакторинг кода этого модуля, чтобы обеспечить правильное понимание текущей системы и что я не нарушил никаких функциональных возможностей. Мы используем RSpec, и я хотел бы знать, как можно было бы написать единичные тестовые примеры для методов этого вспомогательного модуля?Модульное тестирование Модуль управления контроллерами контроллеров Rails - Как?

ответ

3

Предположим, у вас есть app/helpers/address_helper.rb:

module AddressHelper 
    def full_address(address) 
    "#{address.street} #{address.house_number}/#{address.local_number}" 
    end 
end 

Вы можете написать спецификации под spec/helpers/address_helper_spec.rb:

require 'spec/spec_helper' #or something similar, in order to load spec helper 

describe AddressHelper do 
    describe "#full_address" do 
    it "displays the street, local and house number" do 
     address = stub('Address', :street => 'Mountain View', :house_number => '7', :local_number => '44') 
     helper.full_address(address).should eql('Mountain View 7/44') 
    end 
    end 
end 

Ключ здесь helper метод, который дает вам доступ к вспомогательным методам, в данном примере это:

helper.full_address(address) 
+0

Спасибо, это действительно сработало. – karthiks 2011-02-05 08:46:06