我使用模型事件在 Laravel 4 中构建模型端验证creating
:
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;
});
}
}
它运作良好,但我有 PHPUnit 的问题。以下两个测试完全相同,但只是第一个通过:
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
}
}
如果我尝试在同一个测试中创建一个用户两次,它可以工作,但就像绑定事件只存在于我的测试类的第一个测试中一样。在第echo "Hello";
一次测试执行期间仅打印一次。
我简化了我的问题的案例,但您可以看到问题:我无法在不同的单元测试中测试多个验证规则。从几个小时开始,我几乎尝试了所有事情,但我现在快要跳出窗户了!任何想法 ?