RSpec - 通用故障消息而不是有用的输出

时间:2010-10-29 08:14:23

标签: ruby mocking rspec

这是使用RSpec2 - 无论发生什么情况,当期望不匹配时,我似乎得到以下错误。我确信(虽然我不能尝试一段时间)在版本1中,以下代码会声明方法'methods'未被调用。

下面的代码片段演示了这个问题 - 当在初始化中取消注释方法时,测试将通过。删除注释并返回通用错误消息。

describe "Test" do
  it "should do" do
    my_mock = mock("my mock")
    my_mock.should_receive(:methods)
    obj = Shaun.new(my_mock)
  end
end

class Shaun
  def initialize(mock)
    #mock.methods
  end
end

错误

Failures:
  1) Test should do
C:/Program Files/Ruby/Ruby192/lib/ruby/gems/1.9.1/gems/rspec-core-2.0.0/lib/rspec/core/formatters/base_formatter.rb:138:in `block in find_failed_line':
 undefined method `downcase' for nil:NilClass (NoMethodError)
        from C:/Program Files/Ruby/Ruby192/lib/ruby/gems/1.9.1/gems/rspec-core-2.0.0/lib/rspec/core/formatters/base_formatter.rb:136:in `each'
        from C:/Program Files/Ruby/Ruby192/lib/ruby/gems/1.9.1/gems/rspec-core-2.0.0/lib/rspec/core/formatters/base_formatter.rb:136:in `detect'
        from C:/Program Files/Ruby/Ruby192/lib/ruby/gems/1.9.1/gems/rspec-core-2.0.0/lib/rspec/core/formatters/base_formatter.rb:136:in `find_failed_li
ne'
        from C:/Program Files/Ruby/Ruby192/lib/ruby/gems/1.9.1/gems/rspec-core-2.0.0/lib/rspec/core/formatters/base_formatter.rb:122:in `read_failed_li
ne'
        from C:/Program Files/Ruby/Ruby192/lib/ruby/gems/1.9.1/gems/rspec-core-2.0.0/lib/rspec/core/formatters/base_text_formatter.rb:27:in `block in d
ump_failures'

1 个答案:

答案 0 :(得分:1)

在这里工作正常,使用rspec 2.0.1和REE 1.8.7。需要再次检查1.9.2,因为我还没有在这个系统上使用它。

评论时:

Failures:
1) Test should do
   Failure/Error: my_mock.should_receive(:methods)
   (Mock "my mock").methods(any args)
       expected: 1 time
       received: 0 times
   # ./test_rspec.rb:4