Railsの本でAvdiのオブジェクトを読んでいますが、サンプルコードのセクションがわかりません。
彼は次のようなクラスを作成します。依存性注入の目的で推測します。
class Blog
# ...
attr_writer :post_source
# ...
private
def post_source
@post_source ||= Post.public_method(:new)
end
end
それから彼は次のスペックを書きます
# spec/models/blog_spec.rb
require 'ostruct'
describe Blog do
# ...
describe "#new_post" do
before do
@new_post = OpenStruct.new
@it.post_source = ->{ @new_post }
end
it "returns a new post" do
@it.new_post.must_equal @new_post
end
it "sets the post's blog reference to itself" do
@it.new_post.blog.must_equal(@it)
end
end
end
彼がなぜ使うのか分かりません@it.post_source = ->{ @new_post }
@it.post_source = OpenStruct.public_method(:new)
なぜ彼は、ブログのクラスコードに似たようなものを使用しなかったのですか?@post_source ||= Post.public_method(:new)
これには理由がありますか?