10

私はRubyの初心者であり、この質問に長い間悩まされていました。

RSpecファイルで、と書くBook.should <do something>と、shouldキーワードは何ですか?それはBookオブジェクトのメンバーですか?どうしてBookオブジェクトのメンバーになったのですか?それともRubyの構成ですか?関数ですか?関数またはメンバーの場合、これの定義はどこにありますか?

4

2 に答える 2

11

ロード時に、RSpecはRubyに認識されているすべてのオブジェクトに含まれているモジュールにモジュールを含めますKernelしたがって、shouldメソッドをすべてのオブジェクトで使用できるようにすることができます。そのため、shouldはキーワード(、、、、など)ifではなく、通常のメソッドです。classend

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

于 2012-05-23T10:45:51.703 に答える
3

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

Holgerの答えがより明確になる可能性があり、最初に混乱しshouldたのは、コードを次のようにするために、メソッドの命名に関する通常の規則のほとんどを破ることです(たとえば、メソッドについては何も説明していません)。全体が一種の文として読まれます。

そのため、ライブラリは、一連のテストを作成するだけでなく、人間が読める形式の仕様に似た方法でテストを通じてアプリケーションを説明するように促しています。

于 2012-05-23T10:50:02.687 に答える