manuelcalerosolis's avatar

Request in test

In my test I created a method to insert a new user.

<?php

use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;

class UserTest extends TestCase
{
    use DatabaseMigrations;
    use WithoutMiddleware;

    public function testUserCreateFromArray()
    {
        $data = $this->getData();

        $this->post('/user', $data)
            ->seeJsonEquals(['created' => true]);
    }

    public function getData()
    {
        $data = [
            'name'      => 'joe',
            'email'     => 'joe@doe.com',
            'password'  => '12345678'
        ];
        return $data;
    }

}

Created on my controller , runs perfect.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Models\User;
use App\Http\Requests\CreateUserRequest;

class UserController extends Controller
{
    public function index()
    {
        return User::all();//
    }

    public function create()
    {
        return view('user');
    }

    public function store(Request $request)
    {
        User::create($request->all());
        return ['created' => true];
    }

But to create a custom Request begin to fail the test.

Change this line in UserController.php

    public function store(CreateUserRequest $request)
    {
        User::create($request->all());
        return ['created' => true];
    }

Test show me this error

  1. UserTest::testUserCreateFromArray ErrorException: Invalid argument supplied for foreach()

Any help, thank you.

0 likes
0 replies

Please or to participate in this conversation.