2016-09-14 10 views
1

次のモデル関数のためにphpunitを使ってテストケースを記述したいと思います。私はユニットテストの初心者です、親切にアドバイスをしてください。Modelクラスのモックでユニットテストコードを正しく操作する方法

public function checkUserEmailExist($email) 
{ 

    $query = \registry::getDBHandler()->prepare("SELECT email FROM users WHERE email = :EMAIL"); 
    $query->bindValue(":EMAIL", $email); 

    try{ 
     $query->execute(); 
     $result = ($query->fetchColumn()); 
    } catch(PDOException $e) { 
     \debug::error('MySQL errno ' . $e->getCode() . ': "' . $e->getMessage() . '" when executing: ' . $query->queryString); 
    } 

    return $result; 
} 
+0

fetchColumnは何を返しますか?オブジェクトまたは配列? –

+0

@ user3360140:オブジェクト。それは電子メールアドレス –

+0

を返すので、echo $ result-> emailが好きなら、電子メールアドレスを取得する必要がありますか?右? –

答えて

0

まず、テストデータを使用してデータベーステスト用にテストベンチを準備する必要があります。このチュートリアルに従うことによってそれを行うことができます。

https://phpunit.de/manual/current/en/database.html

を次に、あなたのテストを書くことができます。あなたのcheckUserEmailExistメソッドがAuthenticationというクラスにあるとします。次に、あなたのテストは、以下のようになります。あなたは[email protected]メールがあなたのテストデータベースのごusersテーブルに存在することを確認する必要があり

<?php 
class authenticationTest extends PHPUnit_Extensions_Database_TestCase 
{ 
    /** 
    * @test 
    */ 
    public function testCheckUserEmailExist() 
    { 
     $actual = '[email protected]'; 
     $auth = new Authentication(); 
     $expected= $auth->checkUserEmailExist($actual); 
     $this->assertEquals($expected->email, $actual); 
    } 
} 

関連する問題