2015-01-13 2 views
0

Чтобы убрать коды, я отделил RSpec тестов для concerns методов для spec/concerns.guard не может найти обновленные примеры при использовании shared_exapmles_for

Я следовал за this answer. (Копировать & Вставить из ответа)

# app/models/concerns/personable.rb 

module Personable 
    extend ActiveSupport::Concern 

    def full_name 
    "#{first_name} #{last_name}" 
    end 
end 

# spec/concerns/personable_spec.rb 

require 'spec_helper' 

shared_examples_for "personable" do 
    let(:model) { described_class } # the class that includes the concern 

    it "has a full name" do 
    person = FactoryGirl.create(model.to_s.underscore.to_sym, first_name: "Stewart", last_name: "Home") 
    expect(person.full_name).to eq("Stewart Home") 
    end 
end 

# spec/models/master_spec.rb 

require 'spec_helper' 

describe Master do 
    it_behaves_like "personable" 
end 

# spec/models/apprentice_spec.rb 

require 'spec_helper' 

describe Apprentice do 
    it_behaves_like "personable" 
end 

Когда я редактирую personable_spec.rb охранника обнаружить обновление, а потому, что нет ни одного примера в файле он заканчивает No examples found.

Я должен запустить все спецификации, чтобы проверить personable_spec.rb. Есть ли способ проверить примеры автоматически, которые определены в методе shared_examples_for?

ответ

0

Это то, что вы должны сделать:

1- Не называйте ваши общие файлы примеров с суффиксом _spec, они не являются спецификации файла они поддержка файлов. Я также предлагаю сгруппировать их в подпапку с именем support для лучшей организации файлов.

Так что переместите свой файл spec/concerns/personable_spec.rb в spec/support/concerns/personable.rb, или даже spec/support/shared_examples/concerns/personable.rb, или что когда-либо найдете.

2- Удалите строку require 'spec_helper' из SUPORT файлов, это require заявление требуется только в спецификации файлов, а не в поддержку файлов

3- Телль RSpec, чтобы загрузить все файлы в вашем support путем добавления в конце spec_helper.rb файла:

# Load custom matchers and macros, etc 
Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f } 

4- Restart охраннику и запустить тест.

5- Также нужно сказать караул искать изменения во всех файлах, находящихся под support папки и вложенные папки, так что вам не придется перезапустить караул для каждого изменения

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