2014-09-03 55 views
0

我在我的表文件中有以下操作。Cakephp 3如何使用TestSuite测试更新查询?

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

动作我知道查询不返回一个布尔值。但是,如何检查更新是否发生而无需运行其他查询来检查表?

回答

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