2014-06-30 3 views
1

나는이 행동을 명세하고있다.모의 물건을 넣을 곳

def get 
    @asset = current_user.assets.find(params[:id]) 

    send_file @asset.uploaded_file.path, type: @asset.uploaded_file_content_type 

    rescue ActionController::MissingFile 
     redirect_to assets_url, error: 'missing file' 
end 

송신 파일 방법을 테스트하려면 조롱하십시오. 그러나

controller.should_receive(:send_file) 

, 나는 어디에 넣어하는 아무 생각이 모의 :

여기 내 사양 보이는 방법은 다음과 같습니다

subject { response } 

let!(:user) { FactoryGirl.create(:user) } 
let!(:user_2) { FactoryGirl.create(:user) } 
let!(:asset) { FactoryGirl.create(:asset, user_id: user.id) } 
let!(:file) { fixture_file_upload('files/eve.jpg', 'image/jpeg') } 
let!(:folder) { FactoryGirl.create(:folder, user_id: user.id, parent_id: nil) } 

before do 
    sign_in user 
end 

describe '#get' do 
    context 'when exists' do 
     before do 
     get :get, id: asset.id 
     end 
     # controller.should_receive(:send_file).with(*args) <-- I need to test that 
     it { should have_http_status 302 } 
    end 

    context 'when doesn\'t exist' do 
     before do 
     get :get, id: 765  
     end 

     it { should redirect_to_location '/assets'} 
     it { should set_flash_type_to :error } 
     it { should set_flash_message_to 'missing file' } 
    end 
end 

가 어떻게 라인 (6)을 테스트합니까 난을 유지하려면 가능한 경우 한 줄 구문.

답변

0

하면 before 블록에 넣어

before do 
    controller.should_receive(:send_file) 
    get :get, id: asset.id 
end