2013-11-19 8 views
0

Я просто пытаюсь создать простой метод rspec, который принимает объект в качестве аргумента. Я могу сделать что-то вроде следующего:Как создать метод rspec, который принимает аргумент объекта

def check_it(p) 
    before { visit p.full_path } 
    page.should have_title("sample title") 
    p.children.published.each do |pp| 
     check_it(pp) 
    end 
    end 

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

undefined method `check_it' 

ошибку, если не поставить его с другими рельсами хелперов в этот момент я получаю

undefined method `before' for main:Object (NoMethodError) 

Некоторая помощь, получаемая с земли, была бы весьма признательна.

ответ

1

Вы можете добавить его в различные места в файле rspec за пределами примера. Например:

def check_it(p); puts p; end 

describe 'foo' do 
    def check_it2(p); puts p; end 

    context 'bar' do 
    def check_it3(p); puts p; end 

    it 'does something' do 
     check_it 'hello' 
     check_it2 'world' 
     check_it3 'wide' 
    end 
    end 
end 

Есть также способы добавить его за пределы файла rspec, например. поместите его в файл в spec/support и include в целевой файл rspec.

+0

Спасибо. В какой-то момент в моей карьере у меня появилась привычка вводить методы в нижней части файла. Я забыл, что это рубин. – laertiades

1

Не знаю, как другие люди делают это, но я добавить каталог в спецификации и называют его поддержку, поскольку spec_helper включает следующую строку:

Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f } 

Значение ничего в каталоге поддержки будут включены в каждом прогоне.

Таким образом, вы можете просто разместить этот конкретный метод непосредственно в файле в спецификации/поддержке, и он будет доступен для вызова, или вы можете включить его в модуль, а затем включить этот модуль там, где он вам нужен.

+0

Спасибо, я вижу это сейчас. Я пытался поставить его в помощники / – laertiades

Смежные вопросы