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();
}
}
किसी भी मदद की सराहना की होगी :)
testCreate समारोह के अंदर आप अपलोड ही नहीं के बजाय एक स्ट्रिंग के रूप में एक csv फ़ाइल अनुकरण कर सकते हैं: https://laravel-news.com/testing-file-uploads-with-laravel
यह इस तरह है? मैं एक्सएमएल फाइलों से निपट रहा था, मैंने इसे अपने टेस्टकेस पर बनाया –
'स्टोर()' का एक यूनिट टेस्ट कवर होने पर कवर होना चाहिए। एक बेहतर परीक्षण 'assertStringEqualsFile() 'होगा। पहला तर्क '$ आयातसूची-> आयात फ़ाइल' होना चाहिए और दूसरा '$ फ़ाइल' होना चाहिए। यह परीक्षण प्रतिक्रिया स्थिति से अधिक कवर करेगा। – user1965074