【问题标题】:Test failure gives incomplete error message when using short syntax使用短语法时,测试失败会给出不完整的错误消息
【发布时间】:2013-05-11 14:30:47
【问题描述】:

使用 RSpec 编写测试有 2 种语法 (afaik):

经典/旧方式:

  describe "when user_id is not present" do
    before { @micropost.user_id = nil }

    it "should not be valid" do
      @micropost.should_not be_valid
    end
  end

失败时会出现此错误:

rspec ./spec/models/micropost_spec.rb:19 # 当user_id为微博时 不存在应该是无效的

还有简短的语法:

  describe "when user_id is not present" do
    before { @micropost.user_id = nil }
    it { should_not be_valid }
  end

失败时会出现此错误:

rspec ./spec/models/micropost_spec.rb:18 # 当user_id为微博时 不存在

最后一个缺少“不应有效”部分。

有什么办法可以得到完整的测试失败消息,也许是我不知道的标志?

注意:无论如何,更完整的错误消息仍然存在:

  1) Micropost when user_id is not present 
     Failure/Error: it { should_not be_valid }
       expected #<Micropost id: nil, content: "Lorem ipsum", user_id: nil, created_at: nil, updated_at: nil> not to be valid
     # ./spec/models/micropost_spec.rb:18:in `block (3 levels) in <top (required)>'

但最后的回顾并不完整。

【问题讨论】:

    标签: ruby rspec tdd rspec-rails ruby-on-rails-4


    【解决方案1】:

    你看到的文字

    rspec ./spec/models/micropost_spec.rb:19 # 微博1 当 user_id 不存在时2 应该是无效的3

    rspec ./spec/models/micropost_spec.rb:18 # 微博1 当 user_id 不存在时23

    不是错误消息,而是测试名称,它是当前测试的描述与其所有父项的描述的串联:

    describe Micropost do # <= 1
      describe "when user_id is not present" do # <= 2
        before { @micropost.user_id = nil }
    
        it "should not be valid" do # <= 3
          @micropost.should_not be_valid
        end
      end
    end
    

    在简短(单行)语法中 - 测试本身没有描述

    describe Micropost do # <= 1
      describe "when user_id is not present" do # <= 2
        before { @micropost.user_id = nil }
        it { should_not be_valid } # <= 3 - not described!
      end
    end
    

    如果您想强制对该测试进行描述,您可以这样写:

    it('should not be valid') { should_not be_valid }
    

    但是这种方式超出了单线的目的,这应该是不言自明的,你不觉得吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-21
      • 2012-02-01
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      • 2017-05-22
      • 2020-07-08
      • 1970-01-01
      相关资源
      最近更新 更多