0

我的表文件中有以下操作。

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

这是我的 TableTest 中的操作

public function testTokenChange()
{
            $result = $this->Users->tokenChange('5404f27f3d9a4');
            $expected = TRUE;
            debug($result);
            $this->assertEquals($expected,$result);
}

我知道查询不返回布尔值。但是如何在不运行另一个查询来检查表的情况下检查更新是否真的发生了?

4

1 回答 1

2

您基本上会测试修改后的行是否已按预期进行了修改:

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)));
}
于 2014-09-03T19:08:25.327 回答