Как проверить, что фальшивый файл загружен на маршрут, который проверяет файл в Laravel? - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь написать тестовый модуль для маршрута 'store' в моем контроллере, передать поддельный файл для проверки тоже через валидатор моего метода, но все, что я получил, это то, что данные не являются файлом:

Illuminate\Foundation\Testing\TestResponse {
  +baseResponse: Illuminate\Http\JsonResponse {
    #data: "{
              "message":"The given data was invalid.",
              "errors":{"invoice":["The invoice must be a file."]}
           }"

Код:

  • Тест:
        $data = factory('App\Domain\X\X')->raw(['creator_id' => $user->id]);
        $data['invoice'] = UploadedFile::fake()->create('invoice.xlsx');
        $response = $this->json('POST', route('x.store', $data));
  • Контроллер:
 public function store(XXXRequest $request)
    {
        ...
  • Запрос:
class XXXRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'name' => 'required',
            'invoice' => 'nullable|file',
        ];
    }

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

попробуйте это:

Тест:

    $data = factory('App\Domain\X\X')->raw(['creator_id' => $user->id]);
    $data['invoice'] = UploadedFile::fake()->create('invoice.xlsx');
    $response = $this->json('POST', route('x.store', $data), [
       'name' => 'abc',
       'invoice' => $data['invoice']
    ]);
0 голосов
/ 01 апреля 2019

Просто создайте UploadedFile из локального файла и добавьте его в свой запрос:

    use Illuminate\Http\UploadedFile;

    $filename = public_path('tests/invoice.pdf');
    $file = new UploadedFile($filename, 'invoice.pdf', 'application/pdf', filesize($filename), null, true);

    $this->post('/', [
        'invoice' => $file,
    ]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...