2016-04-25 4 views
1

タイトルと同様。 「手放す」ものをもたらす可能性はありますか?ここのように:レットヘルパーでのRspec収率

let(:call_request) { post :create, article: FactoryGirl.attributes_for(yield) } 

私はそれを使用しようとしている:

it 'creates a new article' do 
    expect { call_request { :article } }.to change(Article, :count).by(1) 
end 

それは言う:

ArticlesController POST create when admin signed in with valid attributes creates a new article 
    Failure/Error: let(:call_request) { post :create, article: FactoryGirl.attributes_for(yield) } 

    LocalJumpError: 
     no block given (yield) 
    # ./spec/controllers/articles_controller_spec.rb:61:in `block (3 levels) in <top (required)>' 

私は何とかそれを行うことができますか?文法が間違っているか、そうするのがよりスマートな方法でしょうか?

def call_request 
    post :create, article: FactoryGirl.attributes_for(yield) 
end 

letと常法との間の唯一の違いはlet宣言は、例えば当たりメモ化されることである。

答えて

1

ちょうど方法を定義します。ブロックを渡すつもりなので、memoizationは適切ではなく、メソッドdefがうまくいくでしょう。