2015-01-13 18 views
0

时,警卫找不到更新示例要整理代码,我将RSpec测试方法分为concerns方法和spec/concerns目录。我跟着this answer。 (从答案复制粘贴&)当使用shared_exapmles_for

# 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

这是你必须做的:

不要名加上_spec你的共享文件,例如,他们不规范的文件,他们是支持文件。我还建议将它们分组到一个名为support的子文件夹中以获得更好的文件组织。

因此,将您的文件spec/concerns/personable_spec.rb移动到spec/support/concerns/personable.rb,或者甚至spec/support/shared_examples/concerns/personable.rb,或者您认为合适的东西。

2-从询问服务文件中删除线require 'spec_helper',这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-重启后卫和运行测试。

您还需要告诉卫兵寻找在位于support文件夹和子文件夹下的所有文件的变化,这样你就不必重新启动后卫的每一个变化