
laravel
🚀
note2self
🚀
php
🚀
testing
🚀
Instantiate Request for Testing
When I need to make a request for a test in which the Class is expecting a \Illuminate\Http\Request
I can do this for a file based or non file based request.
/**
* @Then I should be able to upload an image file
*/
public function iShouldBeAbleToUploadAnImageFile()
{
$request = new \Illuminate\Http\Request();
$file = new \Symfony\Component\HttpFoundation\FileBag();
$path = base_path('tests/fixtures/example_profile.jpg');
$originalName = 'example_profile.jpg';
$upload = new \Illuminate\Http\UploadedFile($path, $originalName, null, null, null, true);
$file->set('profile_image', $upload);
$request->files = $file;
$this->repo = new \App\Repositories\ProfileRepository();
$results = $this->repo->uploadUserProfileImage($request);
PHPUnit::assertTrue($results, "Repo did not return true");
PHPUnit::assertTrue(File::exists(public_path('storage/' . $this->user->id . '/example_profile.jpg')), "File Not found");
}
Or just Mocked
$fixture = File::get(base_path('tests/fixtures/slack_incoming_run_report.json'));
$fixture = json_decode($fixture, true);
//$request = new \Illuminate\Http\Request([], [], $fixture,[], [], [], false);
$request = Mockery::mock(\Illuminate\Http\Request::class);
$request->shouldReceive('all')->andReturn($fixture);
/** @var \App\PlannerSlackReport $report */
$report = new \App\PlannerSlackReport();
$report->handle($request);