2015-03-30 3 views
0

Тесты заданы командой Rspec + factory, и у меня есть около 20 тестовых файлов Rspec, и все они разделяют некоторые из необходимых переменных настройки. Например:Общие параметры настройки Rspec для многих тестов

let!(:event) { create(:event) } 
    let!(:user) { create(:user) } 
    let!(:user) { create(:ticket) } 

Я не хочу, чтобы скопировать вставить их назначение переменных для каждого тестового файла, Есть ли способ очистки для заполнения ВАРА? Заранее спасибо.

+0

поставьте их перед блоком в своих тестах. Таким образом, прежде чем делать let! (: Event) {create (: event)} let! (: User) {create (: user)} let! (: User) {create (: ticket)} –

ответ

1

Если вы используете let, вам не нужно их повторять. Он будет сохраняться через текущий блок описания/контекста.

например, следующие должны все пройти:

describe 'some stuff' do 

    let!(:event) { create(:event) } 

    it 'should get an event' do 
     expect(event).to_not be_nil 
    end 

    describe 'indented stuff' do 

    let!(:user) { create(:user) } 

    it 'should still get an event' do 
     expect(event).to_not be_nil 
    end 

    it 'should get a user' do 
     expect(user).to_not be_nil 
    end 

    end 
end 

Чтобы разделить установку среди более чем один файл, определить метод в rails_helper/spec_helper:

module CommonSetup 
    def setup_vars 
    let!(:event) { create(:event) } 
    let!(:user) { create(:user) } 
    let!(:user) { create(:ticket) } 
    end 
end 
... 
... 
Rspec.configure do |c| 
... 
    c.extend CommonSetup 
... 
end 

И тогда в вашей спецификации просто называют setup_vars в вашей спецификации

+0

Хммм .. Спасибо за ответ, но мой вопрос - это общие переменные для нескольких тестовых файлов. Ваш ответ выше, кажется, работает для одного тестового файла.? – IcyBright

+0

Да, это будет. Потому что я ответил, прежде чем вы отредактировали свой вопрос, чтобы сказать, что это было несколько файлов: P – Yule

+0

lol ... sry для двусмысленности .. – IcyBright

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