我从昨天开始尝试使用cakephp 3。我有兴趣使用单元测试。
我已成功测试我的添加操作。但是,如果存在一些验证错误,我很难跟踪。我怎样才能对testDefaultValidation()和buildRules()进行测试,因为它们的内容只有$this->markTestIncomplete('Not implemented yet.'); ??
谢谢。
答案 0 :(得分:1)
您可以使用表格中提供的checkRules
方法编写单元测试,请参阅http://api.cakephp.org/3.3/source-class-Cake.Datasource.RulesAwareTrait.html#40-80。
例如,如果您的comments
表格需要id
来自articles
,则以下内容会测试您是否正确设置了buildRules
。
$table = TableRegistry::get('Comments');
// Where an row in the articles table with id 123 doesn't exist
$comment = $table->newEntity([
'article_id' => 123
]);
$result = $table->checkRules($comment);
$this->assertFalse($result);
$expected = [
'article_id' => [
'_existsIn' => 'This value does not exist'
]
];
$this->assertEquals($expected, $comment->errors());