簡體   English   中英

Ruby gem中的“specs”是什么?

[英]What are “specs” for in Ruby gems?

我正在查看Datamapper目錄並打開dm-core/tasks/dm.rb 一般來說,這個文件到底發生了什么? 對我來說,它看起來像希臘語。 特別是關於“規格”的事情 - 這些是為了什么? 這類似於定義項目應包含的軟件規范嗎?

require 'spec/rake/spectask'
require 'spec/rake/verify_rcov'

task :default => 'spec'

RCov::VerifyTask.new(:verify_rcov => :rcov) do |t|
  t.threshold = 87.7 # Make sure you have rcov 0.7 or higher!
end

def run_spec(name, files, rcov)
  Spec::Rake::SpecTask.new(name) do |t|
    t.spec_opts << '--options' << ROOT + 'spec/spec.opts'
    t.spec_files = Pathname.glob(ENV['FILES'] || files.to_s).map { |f| f.to_s }
    t.rcov = rcov
    t.rcov_opts << '--exclude' << 'spec'
    t.rcov_opts << '--text-summary'
    #t.rcov_opts << '--sort' << 'coverage' << '--sort-reverse'
    #t.rcov_opts << '--only-uncovered'
    #t.rcov_opts << '--profile'
  end
end

public_specs     = ROOT + 'spec/public/**/*_spec.rb'
semipublic_specs = ROOT + 'spec/semipublic/**/*_spec.rb'
all_specs        = ROOT + 'spec/**/*_spec.rb'

desc 'Run all specifications'
run_spec('spec', all_specs, false)

desc 'Run all specifications with rcov'
run_spec('rcov', all_specs, true)

namespace :spec do
  desc 'Run public specifications'
  run_spec('public', public_specs, false)

  desc 'Run semipublic specifications'
  run_spec('semipublic', semipublic_specs, false)
end

namespace :rcov do
  desc 'Run public specifications with rcov'
  run_spec('public', public_specs, true)

  desc 'Run semipublic specifications with rcov'
  run_spec('semipublic', semipublic_specs, true)
end

desc 'Run all comparisons with ActiveRecord'
task :perf do
  sh ROOT + 'script/performance.rb'
end

desc 'Profile DataMapper'
task :profile do
  sh ROOT + 'script/profile.rb'
end

你實際擁有的是一個調用rspec測試的rake文件。 實際規格將在名為foo_spec.rb的文件中,並且更具可讀性。

RSpec是行為驅動開發(BDD)的框架,可用作測試Ruby中傳統單元測試框架的替代方案。

使用BDD而不是傳統的單元測試的真正好處之一是具有可讀性測試,其完全按照規范讀取。

我經常與非技術客戶坐在一起,閱讀規范源文件,看看它們是否有意義,或者是否缺少任何規則。 在幾乎所有情況下,他們都可以智能地跟蹤它們。

這是一個愚蠢的簡單例子:

describe User do
  describe "basic generation" do
    before(:each) do
      @user=User.create :first_name=>"Bob, :last_name=>"Smith"
    end

    it "should be valid" do
      @user.should be_valid
    end

    it "should have a full name" do
      @user.full_name.should=="Bob Smith"
    end
  end
end

正如另一張海報所說,請訪問RSpec網站了解更多信息。

是。

規范文件包含行為驅動開發的規范。 看看rspec

eta :我只是更徹底地閱讀了你的問題。 您正在查看的文件是一個rake文件。 它要求規范來運行您的BDD規范。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM