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)));
}