RSpec应该在课堂上没有达到方法

时间:2013-03-01 20:31:26

标签: ruby testing rspec2 ruby-1.9.3

ruby​​ / rspec的新手,并尝试测试方法引发异常。我可能会完全错误地解决这个问题。

#require 'rspec'

describe "TestClass" do
  it "should raise exception when my method is called" do
    test = Test.new
    test.should_receive(:my_method).and_raise
  end
end

class Test
  def my_method
    raise
  end
end  


rspec test.rb
F

Failures:

  1) TestClass should raise exception when my method is called
     Failure/Error: test.should_receive(:my_method).and_raise
       (#<Test:0x007fc61c82f7c8>).my_method(any args)
           expected: 1 time
           received: 0 times
     # ./test.rb:6:in `block (2 levels) in <top (required)>'

Finished in 0.00061 seconds
1 example, 1 failure

Failed examples:

rspec ./test.rb:4 # TestClass should raise exception when my method is called

为什么收到的邮件是零次?

2 个答案:

答案 0 :(得分:1)

你的测试是错误的。为了测试引发异常,您需要执行此操作:

it "should raise exception when my method is called" do
  test = Test.new
  test.should_receive(:my_method)

  expect {
    test.my_method
  }.to raise_error      
end

在这种情况下,您可能不需要添加should_receive。通过调用my_method,您确保test正在接收该方法。当你不需要嘲笑时,基本上你就是在嘲笑。

答案 1 :(得分:0)

您必须做一些事情来调用该方法。如果是回调here则是如何测试它们的示例。