0

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

メッセージがゼロ回受信されるのはなぜですか?

4

2 に答える 2

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基本的に、モックする必要がないときにモックします。

于 2013-03-01T20:42:51.257 に答える
0

そのメソッドを呼び出すには、何かを行う必要があります。コールバックの場合、ここにそれらをテストする方法の例があります。

于 2013-03-01T20:34:24.637 に答える