Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 什么是「;“规格”;用红宝石做的?_Ruby On Rails_Ruby_Rubygems - Fatal编程技术网

Ruby on rails 什么是「;“规格”;用红宝石做的?

Ruby on rails 什么是「;“规格”;用红宝石做的?,ruby-on-rails,ruby,rubygems,Ruby On Rails,Ruby,Rubygems,我正在浏览Datamapper目录,打开了dm core/tasks/dm.rb。一般来说,这个文件到底是怎么回事?我觉得它像希腊语。特别是关于“规格”的事情——这些是做什么用的?这类似于定义项目应该包含哪些内容的软件规范吗 require 'spec/rake/spectask' require 'spec/rake/verify_rcov' task :default => 'spec' RCov::VerifyTask.new(:verify_rcov => :rcov)

我正在浏览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
要求“spec/rake/spectask”
要求“规范/耙/验证”\u rcov
任务:默认值=>'spec'
RCov::VerifyTask.new(:verify_RCov=>:RCov)do | t|
t、 阈值=87.7#确保您的rcov为0.7或更高!
结束
def run_规格(名称、文件、rcov)
Spec::Rake::SpecTask.new(name)do | t|
t、 规格选择是

规范文件包含行为驱动开发的规范。退房


eta:我只是把你的问题读得更透彻了一点。您正在查看的文件是一个文件。它要求spec运行您的BDD规范

您实际拥有的是一个rake文件,它调用rspec测试。实际的规范将在名为foo_spec.rb的文件中,可读性更强

RSpec是一个用于行为驱动开发(BDD)的框架,用于替代传统的Ruby单元测试框架testunit

与传统的单元测试相比,使用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

正如另一张海报所说,请转到以获取更多信息。

这里eta的意思是什么?eta的意思是编辑以添加。我只看到了p.S