【发布时间】:2014-07-27 15:31:25
【问题描述】:
我正在尝试做一个非常基本的test:
public function testUsernameIsRequired(){
$user = new User;
$user->email = "phil@ipbrown.com";
// User should not save
$this->assertFalse($user->save());
}
在下面model:
class User extends Eloquent implements UserInterface, RemindableInterface {
use SoftDeletingTrait;
protected $fillable = array('email', 'username', 'password');
public static $rules = array(
'email' => 'required|min:3',
'username' => 'required|min:3',
'password' => 'required|min:3'
);
}
根据我的想法(...是的),这个测试应该会成功,因为在没有 required 字段的情况下保存的 User 模型实际上并没有保存。
但是这个模型会以某种方式保存,不会抛出任何错误并创建一个完全空的用户。
关于我做错了什么有什么想法吗?
【问题讨论】:
-
您在哪里/如何调用规则来“保存”用户而不进行验证?我没有看到你验证任何东西。
-
我实际上不是因为除了使用我想远离的“Ardent”之外我找不到任何文档。所以我没有自我验证模型的起点,在我读到的关于模型测试的教程中也没有提到它。
-
那么 save() 如何/为什么会失败?规则没有在任何地方应用——因此模型应该保存在你的测试中。
-
$rules 只是你编造的东西——它不会像那样开箱即用
-
是的,这就是我不清楚的地方。 $rules 在 Laravel 教程中的某处有说明,我误以为它是系统范围的变量函数
标签: unit-testing model laravel-4 phpunit