Bonjour tous le monde !
Je début un peu dans les tests unitaires avec PHP je me heurte à un problème où j'ai du mal à trouver la solution.
Je suis en train un package que j'utiliserais dans mes projets laravel.
Dedans je dois générer un fichier csv, je souhaiterais enregistrer ce fichier dans un emplacement qui sera passé en paramètre. Pour cela j'utilise la facade Storage::put();
voilà la fonction save():
public function save($filename = "im_your_father.csv")
{
$storageDirectory = __DIR__.'/';
$data = $this->build();
Storage::put($storageDirectory.$filename, $data);
return file_exists($storageDirectory.$filename);
}
Je voudrais savoir comment ecrire le test unitaire de cette fonction... j'ai essayé ceci :
public function testCreateCsvFromArray()
{
$csvName = 'csv_test.csv';
$this->csvFile = $csvName;
$csv = new CSVFactory();
$arr = array(
array(
'name' => 'samplename1',
'number' => 1
)
);
$header = array(
'name', 'number'
);
$csv->create($arr, $header)->save($this->csvFile);
$this->assertTrue(file_exists('./test/'.$this->csvFile));
}
Je sais que le test unitaire ne peut pas enregistrer de fichier directement, on est obligé de simuler cela. Mais je ne trouve pas comment faire :(
Le seul exemple que j'obtiens c'est :
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');
}
Mais mon cas n'est pas un UploadedFile.