IT技術にまつわる実験ノート

「長編を書くより、短編を数多く完成させてください。それが上達への近道です」 by 手塚治虫

自作Webアプリ「IT勉強会用 名刺ジェネレーター」を公開しました!ぜひご活用ください😀

https://it-benkyoukai-meishi.herokuapp.com/

RSpec v.3.8 の let メソッドのドキュメントを読んでみる

f:id:matt-note:20181021191534p:plain

f:id:matt-note:20181021191551p:plain

 

上記のように、let メソッドは、第一引数に name を受け取り、ブロックを受け取るように定義されている。

 

define_method

上記ソースコードで、define_method(name) のように、引数の name を define_method に渡している。define_method メソッドは Ruby のメソッドで、ドキュメントは以下のようになっている。

f:id:matt-note:20181021192743p:plain

 

とにかく、define_method の引数の name には、メソッド名を String か Symbol で指定するとのこと。

 

let!

なお、遅延読み込みせず、ブロックを即座に実行する let! メソッドもある。以下のように、メソッド内で before メソッドを呼び出している。

f:id:matt-note:20181021203245p:plain

f:id:matt-note:20181021203303p:plain

参考:Method: RSpec::Core::MemoizedHelpers::ClassMethods#let! — Documentation for rspec/rspec-core (master)