Laravel 5: Modell->fill() ignoriert $fillable Eigenschaft in unit-tests

Ich habe eine Benutzer-controller mit den folgenden Validierungsregeln:

public function store(Request $request)
{
    ...
    $this->validate($request, [
        'name' => 'required',
        'email' => 'email|required|unique:users',
        'password' => 'confirmed|max:32|min:8|required',
        'roles' => 'exists:roles,id|required',
    ]);

    $user = new User();
    $user->fill($request->all());
   ...
}

Meine User.php Modell definiert die befüllbar-Eigenschaften:

protected $fillable = ['name', 'email'];

Übergeben werden, die confirmed Validierung habe ich zu senden password und password_confirmation Felder in der POST-Anforderung.

Während der Entwicklung funktioniert alles einwandfrei, aber in der unit-tests ich bin immer ein Datenbank Fehler. Es versucht zum einfügen von Daten in eine password_confirmation Spalte. Es ist wie es ignoriert die $fillable array.

Weiß ich über die "laravel Verluste event-Handler, die zwischen den tests" bug/Problem (https://github.com/laravel/framework/issues/1181). Also ich denke, dass vielleicht ich ' m fehlt, um eine Modell-Funktion abgesehen von Model::boot() (ich nenne User::boot() im test setUp() - Funktion).

Dank,

Bearbeiten

Lesen der Model.php Quelle, die ich gefunden habe, dass jemand anruft Model::unguard() https://github.com/laravel/framework/blob/5.1/src/Illuminate/Database/Eloquent/Model.php#L2180 nach der setUp () - Funktion und vor dem test. Wenn ich den Anruf User::reguard() am Anfang der test geht es, aber (ich weiß nicht, warum), die unguard() und reguard() Funktionen mehrfach aufgerufen und der test wird wirklich langsam.

InformationsquelleAutor rvignacio | 2015-06-19

Schreibe einen Kommentar