<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                由于TP測試框架更偏向于黑盒測試(實際上我們使用的是灰盒測試),因此在對數據庫進行測試的時候,我們沒有辦法(或者是不方便)使用mock。所以我們使用TP測試框架的時候對數據操作進行測試的時候,我們需要為數據庫的基境進行搭建。 > 1. 黑盒測試:測試人員不需要了解代碼如何工作,只需要根據指定輸入,斷言輸出。 > 2. 白盒測試:測試人員需要了解代碼,用來幫助測試的進行。 > 3. 灰盒測試:黑盒和白盒的中間,使用黑盒方法的同時使用白盒測試。 TP的官方測試框架主要使用灰盒的測試方法,如果需要使用mock的話,可以使用快速入門中提到的測試庫。 ## 安裝DBUnit。 使用thinkUnit的時候安裝的PHPUNIT依賴中是沒有DBUNIT的。因此如果我們要對數據庫進行測試的話,那么就需要安裝DBUnit了。 可以在composer中的require-dev中添加以下的依賴: `"phpunit/dbunit": ">=1.2"` 然后更新composer即可。 `composer update` ## 編寫測試用例 安裝完DBUnit之后,我們就需要重新編寫測試用例了。不過,TP本身的測試庫并沒有提供數據庫測試的測試用例基類,因此需要我們自己編寫。 ``` <?php namespace tests; use PHPUnit_Extensions_Database_TestCase; use think\testing\ApplicationTrait; use think\testing\AssertionsTrait; use think\testing\CrawlerTrait; class ClientTest extends PHPUnit_Extensions_Database_TestCase{ use ApplicationTrait, AssertionsTrait, CrawlerTrait; protected $baseUrl = 'http://localhost'; //獲得連接 public function getConnection(){ //數據庫的連接 } // 獲得初始數據 public function getDataSet(){ // 基境的建立 } // 具體的測試用例 } ``` ## 將數據庫配置從測試類中抽離 在上面的例子中,我們每一個測試類都需要獲得連接,讀取數據庫的配置。 在通常情況下,我們希望能夠將數據庫配置設為全局,這樣就算數據庫配置修改的話,也只需要修改全局一個配置。 在thinkphp的根目錄下,有一個phpunit的配置文件,phpunit.xml文件,我們只需要再phpunit.xml中添加如下的信息: ``` <phpunit> ......其他配置 ...... <php> <var name="DB_DSN" value="mysql:dbname=你的數據庫名;host=localhost" /> <var name="DB_USER" value="用戶名" /> <var name="DB_PASSWD" value="密碼" /> <var name="DB_DBNAME" value="數據庫名" /> </php> </phpunit> ``` 而后在getConnection方法為: ``` if ($this->conn === null) { if (self::$pdo == null) { self::$pdo = new \PDO( $GLOBALS['DB_DSN'], $GLOBALS['DB_USER'], $GLOBALS['DB_PASSWD'] ); } $this->conn = $this->createDefaultDBConnection(self::$pdo, $GLOBALS['DB_DBNAME']); } return $this->conn; ``` > 再走一步:但是這樣的話,我們每個方法也需要寫這樣重復的內容。因此,我們還可以將其抽象為父類,然后再需要使用數據庫的測試類中繼承該類。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看