测试buildRules cakephp

时间:2016-10-17 08:19:10

标签: cakephp-3.0

我从昨天开始尝试使用cakephp 3。我有兴趣使用单元测试。

我已成功测试我的添加操作。但是,如果存在一些验证错误,我很难跟踪。我怎样才能对testDefaultValidation()和buildRules()进行测试,因为它们的内容只有$this->markTestIncomplete('Not implemented yet.'); ??

谢谢。

1 个答案:

答案 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());