class User extends Eloquent {
public function isValid()
{
return Validator::make($this->toArray(), array('name' => 'required'))->passes();
}
public static function boot()
{
parent::boot();
static::creating(function($user)
{
echo "Hello";
if (!$user->isValid()) return false;
});
}
}
O iyi çalışıyor ama PHPUnit ile sorunları var. İki Aşağıdaki testler tam olarak aynıdır ama birincisi geçiş juste: Aynı testte iki kez bir kullanıcı oluşturmayı denerseniz
class UserTest extends TestCase {
public function testSaveUserWithoutName()
{
$count = User::all()->count();
$user = new User;
$saving = $user->save();
assertFalse($saving); // pass
assertEquals($count, User::all()->count()); // pass
}
public function testSaveUserWithoutNameBis()
{
$count = User::all()->count();
$user = new User;
$saving = $user->save();
assertFalse($saving); // fail
assertEquals($count, User::all()->count()); // fail, the user is created
}
}
, çalışıyor, ancak bağlanma olayı sadece mevcut ise gibidir Test sınıfımın ilk testi. İlk test yürütme sırasında echo "Hello";
sadece bir kez yazdırılır.
Sorumun için durum basitleştirmek ama sorunu görebilirsiniz: Farklı birim testlerinde çeşitli doğrulama kurallarını test edemez. Saatlerden beri neredeyse her şeyi deniyorum ama şimdi pencerelerden dışarı atlamak üzereyim! Herhangi bir fikir ?
Oku https://github.com/laravel/framework/issues/1181 – crynobone
Teşekkür ederim. Son olarak, Model Olaylar kolayca test edilemez. Sorunumu bu numarayla çözüyorum: 'setUp()' yönteminde 'Kullanıcı :: boot()' olarak adlandırıyorum. –
Kullanıcı Kullanıcı gözlemini (yeni UserObserver) 'kullanmayı tercih ederim, bu şekilde' UserObserver'ı kendi başınıza test edebilirsiniz. – crynobone