Ruby 测试运行后rake中止&;(故意)在打印错误消息之前失败

Ruby 测试运行后rake中止&;(故意)在打印错误消息之前失败,ruby,testing,rspec,rake,Ruby,Testing,Rspec,Rake,我正在浏览教程,由于Rake(和rspec)的一些问题,我无法通过第一个挑战 我正在尝试运行的测试: require 'hello' describe "the hello function" do it "says hello" do hello.should == "Hello!" end end describe "the greet function" do it "says hello to someone" do greet("Alice").shou

我正在浏览教程,由于Rake(和rspec)的一些问题,我无法通过第一个挑战

我正在尝试运行的测试:

require 'hello'

describe "the hello function" do
  it "says hello" do
    hello.should == "Hello!"
  end
end

describe "the greet function" do
  it "says hello to someone" do
    greet("Alice").should == "Hello, Alice!"
  end

  it "says hello to someone else" do
    greet("Bob").should == "Hello, Bob!"
  end
end
我只创建了hello.rb文件(根据教程)并添加了

def hello
end
作为记录,在我创建文件之前,我得到了一个长输出,表明require“hello”没有按预期工作,并且在创建文件时消失了。所以一切都很顺利

当我运行rake命令时,我的输出是(粗体部分是我主要关心的):

wendy@wendy-EL1352:~/the_odin_project/learn_ruby/00_hello$rake (in/home/wendy/the_odin_project/learn_ruby)

hello函数 说你好(失败-1)

失败:

1) hello函数表示hello 失败/错误:hello.should==“hello!” 期待:“你好!” get:nil(使用==) #./00_hello/hello_规范rb:120:in‘块(2层)in’

弃用警告:

使用rspec expectations'old
中的
should
:should
语法而不显式启用>该语法已被弃用。使用新的
:expect
语法或显式启用
:should
>。从/home/wendy/the_odin_project/learn_ruby/00_hello/hello_spec.rb:120:in>调用“block(2层)in”

如果您需要更多的回溯,这些不推荐都可以 确定在何处进行必要的更改,您可以配置
config.raise\u errors\u用于\u弃用,它将打开
弃用警告转化为错误,为您提供完整的回溯

1弃用警告总数

完成时间为0.00334秒(文件加载时间为0.14558秒) 1例,1例失败

失败的示例:

rspec./00_hello/hello_spec.rb:119#hello函数表示hello rake中止! /home/wendy/.rvm/rubies/ruby-2.0.0-p481/bin/ruby-S rspec/home/wendy/the_-odin_项目/learn_-ruby/00_-hello/hello_spec.rb-I/home/wendy/the_-odin_项目/learn_-ruby/00_-hello/solution-f文档-r/rspec配置失败 /home/wendy/.rvm/gems/ruby-2.0.0-p481@railstutorial_rails_4_0/gems/rspec-core-2.13.1/lib/rspec/core/rake_task.rb:156:in
run_task'
/home/wendy/.rvm/gems/ruby-2.0.0-p481@railstutorial_rails_4_0/gems/rspec-core-2.13.1/lib/rspec/core/rake_task.rb:124:in
块(2级)中的初始化' /home/wendy/.rvm/gems/ruby-2.0.0-p481@railstutorial_rails_4_0/gems/rspec-core-2.13.1/lib/rspec/core/rake_task.rb:122:in'block in initialize' 任务:TOP=>default=>spec (通过使用--trace运行任务查看完整跟踪)

我并不是非常关心弃用警告(我已经仔细查看了足够多的内容,可以合理地确定它们之间没有关联)。如果你认为这就是原因,我会羞愧地低头。我确实需要弄清楚如何重写规范或更改配置设置,但我相信我自己可以做到。我真正关心的是Rake可以访问测试并运行它们,但在显示错误消息之前会中止

如果我运行rspec hello_spec.rb,输出如下:

wendy@wendy-EL1352:~/the_odin_project/learn_ruby/00_hello$rspec hello_spec.rb /home/wendy/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/site\u ruby/2.0.0/rubygems/core\u ext/kernel\u require.rb:55:in
require]:无法加载这样的文件--hello(LoadError)
from/home/wendy/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/site\u ruby/2.0.0/rubygems/core\u ext/kernel\u require.rb:55:in
require' from/home/wendy/the_odin_project/learn_ruby/00_hello/hello_spec.rb:116:in

from/home/wendy/.rvm/gems/ruby-2.0.0-p481@railstutorial_rails_4_0/gems/rspec-core-3.0.2/lib/rspec/core/configuration.rb:1057:in
load' from/home/wendy/.rvm/gems/ruby-2.0.0-p481@railstutorial_rails_4_0/gems/rspec-core-3.0.2/lib/rspec/core/configuration.rb:1057:in
block in load_spec_files'
from/home/wendy/.rvm/gems/ruby-2.0.0-p481@railstutorial_rails_4_0/gems/rspec-core-3.0.2/lib/rspec/core/configuration.rb:1057:in
each' from/home/wendy/.rvm/gems/ruby-2.0.0-p481@railstutorial_rails_4_0/gems/rspec-core-3.0.2/lib/rspec/core/configuration.rb:1057:in
load_spec_files'
from/home/wendy/.rvm/gems/ruby-2.0.0-p481@railstutorial_rails_4_0/gems/rspec-core-3.0.2/lib/rspec/core/runner.rb:97:in
setup' from/home/wendy/.rvm/gems/ruby-2.0.0-p481@railstutorial_rails_4_0/gems/rspec-core-3.0.2/lib/rspec/core/runner.rb:85:in
run'
from/home/wendy/.rvm/gems/ruby-2.0.0-p481@railstutorial_rails_4_0/gems/rspec-core-3.0.2/lib/rspec/core/runner.rb:70:in
run' from/home/wendy/.rvm/gems/ruby-2.0.0-p481@railstutorial_rails_4_0/gems/rspec-core-3.0.2/lib/rspec/core/runner.rb:38:in
invoke'
from/home/wendy/.rvm/gems/ruby-2.0.0-p481@railstutorial_rails_4_0/gems/rspec-core-3.0.2/exe/rspec:4:in
' from/home/wendy/.rvm/gems/ruby-2.0.0-p481@railstutorial_rails_4_0/bin/rspec:23:in
load'
from/home/wendy/.rvm/gems/ruby-2.0.0-p481@railstutorial_rails_4_0/bin/rspec:23:in
'

所以我想知道为什么运行rake链接所需的hello.rb文件没有问题,但是rspec命令没有。我只想让这些测试正常运行(并且失败),这样我就可以继续执行任务了

耙子:

# This Rakefile has all the right settings to run the tests inside each lab
gem 'rspec', '~>2'
require 'rspec/core/rake_task'

task :default => :spec

desc "run tests for this lab"
RSpec::Core::RakeTask.new do |task|
  lab = Rake.application.original_dir
  task.pattern = "#{lab}/*_spec.rb"
  task.rspec_opts = [ "-I#{lab}", "-I#{lab}/solution", '-f documentation', '-r ./rspec_config']
  task.verbose = false
end
添加gem“ruby gems”只会给输出增加更多混乱

在之前的尝试中,我已经在00_hello目录和learn_ruby目录中用rspec--init初始化了rspec。在本例中,我遇到了完全相同的错误消息

在过去的几个月里,我一直在学习Ruby和Rails。有一两次,我几乎要问一个问题了,但我在博士讲到一半的时候找到了答案
RSpec::Core::RakeTask.new do |task|
  lab = Rake.application.original_dir
  task.pattern = "#{lab}/*_spec.rb"
  **task.rspec_opts = [ "-I#{lab}", "-I#{lab}/solution", '-f documentation', '-r ./rspec_config']**
  task.verbose = false
end