2012-05-23 13 views
10

私はRubyの初心者です。この質問は長らく残っていました。RSpec Rubyで "should"というキーワードが正確に何か

RSpecファイルで、Book.should <do something>と記述すると、shouldというキーワードは何ですか? Bookオブジェクトのメンバーですか? Bookオブジェクトのメンバーになったのはどうでしたか?それとも、Rubyのいくつかの構成ですか?それは機能ですか?関数またはメンバーの場合、これの定義はどこで見つけることができますか?

+1

この質問は、http://stackoverflow.com/questions/3105755/ruby-metaprogramming-how-does-rspecs-should-workの複製です。 –

+0

このリンクは、実際に何が行われているか説明していません。 "should"というキーワードは正確に何ですか? – woodstok

+3

+1魔法を理解しようとする。 –

答えて

11

ロード時に、RSpecにはa moduleKernelモジュールに含まれています。モジュールはRubyが認識しているすべてのオブジェクトに含まれています。したがって、すべてのオブジェクトでshouldメソッドを使用できるようにすることができます。したがって、shouldは、キーワード(例:ifclass、またはend)ではなく、通常の方法です。

mixinはロード中またはRSpec中に「パッチ適用」されるため、RSpecコンテキストでのみ使用可能であることに注意してください。

+0

それは私が探していたものでした。ありがとうございます – woodstok

3

私はこのhereと同様の質問に答えました。基本的に:

ホーゲルの答えがより明示的になる可能性があり、最初は混乱していたかもしれませんが、shouldはメソッドの命名規則の大部分を壊しています(メソッドについては何も記述しません)コード全体を一種の文章として読むことができます。

ライブラリは、一連のテストを作成するのではなく、人間が判読できる仕様に似た方法でアプリケーションを記述することを推奨しています。

+1

ok。内部的に何をする必要がありますか? – woodstok

+2

テストの一部として実行される条件が真であるというアサーションを作成します。したがって、 'assert x == y'と似ています。 – Russell

関連する問題