Для чего нужны «спецификации» в драгоценных камнях Ruby? - PullRequest
1 голос
/ 05 июня 2009

Я просматривал каталоги 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

Ответы [ 2 ]

4 голосов
/ 05 июня 2009

То, что у вас есть, есть файл rake, который вызывает тесты rspec. Фактические спецификации будут в файлах с именем 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 .

0 голосов
/ 05 июня 2009

Да.

Spec-файлы содержат спецификации для поведенческой разработки. Проверьте rspec .

eta : Я просто прочитал ваш вопрос немного более подробно Файл, который вы просматриваете, является rake файлом. Он требует спецификации для запуска ваших спецификаций BDD.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...