2016-06-02 4 views
5

मैं एक लार्वेल एपीआई के माध्यम से एक सीएसवी फ़ाइल अपलोड करना चाहता हूं तो PHPUnit के साथ अपलोड का परीक्षण करें।PHPUnit में परीक्षण कैसे करें; लार्वेल में लिखे गए एपीआई का उपयोग कर एक सीएसवी फ़ाइल अपलोड करें?

नियंत्रक में store() फ़ंक्शन और testCreate() फ़ंक्शन मूल रूप से ऐसा दिखाई देगा।

यह मैं अब तक क्या मिला है:

<?php 

use Illuminate\Foundation\Testing\DatabaseTransactions; 
use Illuminate\Foundation\Testing\WithoutMiddleware; 

class ProspectListControllerTest extends TestCase 
{ 

use WithoutMiddleware, DatabaseTransactions; 

public function testCreate() 
{ 

    $file = new Symfony\Component\HttpFoundation\File\UploadedFile(storage_path('/crm/data/test-file.csv'), 'test-file.csv', 'text/plain', 446, null, true); 

    $this->call('POST', '/api/lists-imports/', [], [], ['csv_file' => $file]); 
    $this->dump()->assertResponseOk(); 
    } 
} 

और नियंत्रक विधि की तरह दिखता है:

<?php 

namespace App\Http\Controllers; 

use App\ListImport; 
use Illuminate\Http\Request; 

class ListImportController extends Controller 
{ 
public $model = ListImport::class; 

public function store(Request $request, ListImport $importList) 
{ 
    $request->file('importFile')->move(public_path('storage.crm.data'), $request->file('importFile')->getClientOriginalName()); 

    $importList->importFile = public_path('storage.crm.data') . '/' . $request->file('importFile')->getClientOriginalName(); 

    $importList->save(); 

} 
} 

किसी भी मदद की सराहना की होगी :)

+1

testCreate समारोह के अंदर आप अपलोड ही नहीं के बजाय एक स्ट्रिंग के रूप में एक csv फ़ाइल अनुकरण कर सकते हैं: https://laravel-news.com/testing-file-uploads-with-laravel

यह इस तरह है? मैं एक्सएमएल फाइलों से निपट रहा था, मैंने इसे अपने टेस्टकेस पर बनाया –

+1

'स्टोर()' का एक यूनिट टेस्ट कवर होने पर कवर होना चाहिए। एक बेहतर परीक्षण 'assertStringEqualsFile() 'होगा। पहला तर्क '$ आयातसूची-> आयात फ़ाइल' होना चाहिए और दूसरा '$ फ़ाइल' होना चाहिए। यह परीक्षण प्रतिक्रिया स्थिति से अधिक कवर करेगा। – user1965074

उत्तर

0

का एक नया तरीका नहीं है Laravel में परीक्षण फ़ाइल अपलोड। (डॉक्स से)

public function testAvatarUpload() 
{ 
    Storage::fake('avatars'); 

    $response = $this->json('POST', '/avatar', [ 
     'avatar' => UploadedFile::fake()->image('avatar.jpg') 
    ]); 

    // Assert the file was stored... 
    Storage::disk('avatars')->assertExists('avatar.jpg'); 

    // Assert a file does not exist... 
    Storage::disk('avatars')->assertMissing('missing.jpg'); 
} 
संबंधित मुद्दे