Cakephp 3如何使用TestSuite测试更新查询?
我的表文件中有以下操作Cakephp 3如何使用TestSuite测试更新查询?,php,mysql,sql,cakephp,cakephp-3.0,Php,Mysql,Sql,Cakephp,Cakephp 3.0,我的表文件中有以下操作 public function tokenChange($token){ if(!$token) return false; return $this->query() ->update() ->set(['email_token' => NULL, 'email_verified'=>1, 'email_token_expires'=>NULL])
public function tokenChange($token){
if(!$token) return false;
return $this->query()
->update()
->set(['email_token' => NULL, 'email_verified'=>1, 'email_token_expires'=>NULL])
->where(['email_token' => $token])
->execute();
}
这是我测试中的动作
public function testTokenChange()
{
$result = $this->Users->tokenChange('5404f27f3d9a4');
$expected = TRUE;
debug($result);
$this->assertEquals($expected,$result);
}
我知道查询不会返回布尔值。但是我如何检查更新是否确实发生,而不运行另一个查询来检查表???您基本上会测试修改的行是否按照预期进行了修改:
public function testTokenChange()
{
$id = $this->Users->findByEmailToken('5404f27f3d9a4')->first()->id;
$this->Users->tokenChange('5404f27f3d9a4');
$row = $this->Users->get($id);
$expected = [
'email_token' => null,
'email_verified' => true,
'email_token_expires' => null
];
$this->assertEquals($expected, $row->extract(array_keys($expected)));
}