0

私はルビー構文ではそれほど文字列ではありませんが、それを学ぶときに何かを理解すれば、制限なしですべてを行うことができます。たとえば、クラスメソッドを取得したとしましょう。ユニットテストで再定義して、内容を分離したいと思います。テスト中ですが、どうすればよいですか?クラス名がfooで、インスタンスメソッドがbarだとします。

4

1 に答える 1

1

Test :: Redefは、まさにこれを行うように設計されたgemです。

test "some method on Foo should be called because under normal circumstances it something useful like send network traffic" do
  Test::Redef.rd(
    'Foo#bar'  => proc {|args| puts 'new behavior goes here!'},
    'Foo#baz'  => :empty,   # same as => proc { }
    'Foo#quux' => :wiretap, # no behavior change but you get invocation tracking
    'Foo.blat' => :empty,   # class method
  ) do |rd|

    # code under test


    assert_equal [['invocation 1 arg 1', 'invocation 1 arg 2'], 
                  ['invocation 2 arg 1'],
                 ], rd[:bar].args, 'Foo#bar was called with the right arguments'
  end

  # now all methods are back to normal
end
于 2013-10-15T16:12:46.630 に答える