2009-06-05 7 views
0

私はDatamapperディレクトリを探していて、dm-core/tasks/dm.rbを開いていました。ちょうど一般的に言えば、このファイルでは何が起こっているのですか?私にはギリシャのように見えます。特に「スペック」についてのこのことは何ですか?それは、プロジェクトが取り組まなければならないものを定義するソフトウェア仕様に似ていますか?Rubyの宝石のスペックは何ですか?

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 

答えて

4

あなたが実際に持っているのは、rspecテストを呼び出すレーキファイルです。実際の仕様はfoo_spec.rbという名前のファイルにあり、より読みやすくなっています。

RSpecはBehavior Driven Development(BDD)のフレームワークであり、従来のユニットテストフレームワークの代わりにRubyで使用されています。

従来の単体テストに比べてBDDを使用することの本当のメリットは、文字通り仕様書として読める読みやすいテストの1つです。

私はテクニカルではないクライアントと一緒に座って、スペックソースファイルを読んで理解できるかどうか、またはルールがないかどうかを確認することがよくあります。ほとんどすべての場合、彼らは知的にそれらに従うことができます。他のポスターは詳細はRSpec web siteに行き、言ったように

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 

:ここ

は愚かな簡単な例です。

0

はい。

仕様ファイルには、動作駆動型開発の仕様が含まれています。 rspecをチェックしてください。

η:ちょっとあなたの質問をちょっと読んだだけです。あなたが見ているファイルはrakeファイルです。 BDD仕様を実行するための仕様が必要です。