<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 附錄:單元測試 [TOC] 仿照PHPUnit提供一個簡易的單元測試框架 ## TestCase 這是基類,請繼承。 ## 方法 test開頭的public方法才能作為測試用例,其余將被忽略。 ## setUpBeforeClass與tearDownAfterClass setUpBeforeClass\(\) 與 tearDownAfterClass\(\) 模板方法將分別在測試用例類的第一個測試運行之前和測試用例類的最后一個測試運行之后調用 ## setUp與tearDown 測試類的每個測試方法都會運行一次 setUp\(\) 和 tearDown\(\) 模板方法 ## coroutineRequestHttpController 啟動一個http的模擬訪問。 ```php $testRequest = new TestRequest('/TestController/test'); $testResponse = yield $this->coroutineRequestHttpController($testRequest); $this->assertEquals($testResponse->data, 'helloworld'); ``` TestRequest中可以設置請求的一些方法。 testResponse為返回的數據。其中data為返回的值,其余見類成員。 ## coroutineRequestTcpController 啟動一個tcp的模擬訪問 ```php if ($this->config['server']['pack_tool'] != 'JsonPack') { $this->markTestSkipped('協議解包不是JsonPack'); } $data = ['controller_name' => 'TestController', 'method_name' => 'test', 'data' => 'helloWorld']; $reusult = yield $this->coroutineRequestTcpController($data); $this->assertCount(2, $reusult); ``` $data傳進去的是一個協議體 $result是返回的服務器具體操作步驟,詳情可以自己打印。 --- 特別注意這是模擬的方式,所以服務器不會產生任何的send操作,只是記錄操作。 使用controller內提供的方法才能被記錄,get\_instance\(\)的方法不會被記錄,可能還會產生錯誤。 ## markTestSkipped 表示該測試被跳過。 ## @needTestTask 標注needTestTask 被標注的將會在測試的時候額外進行task同步測試。 ## @codeCoverageIgnore 標注codeCoverageIgnore 被標注的會在測試的時候被忽略 ## @depends 標注depends 對測試方法之間的顯式依賴關系進行聲明。 被標注的將產生依賴,和phpunit一樣 ```php public function testEmpty() { $stack = []; $this->assertEmpty($stack); return $stack; } /** * @depends testEmpty */ public function testPush(array $stack) { array_push($stack, 'foo'); $this->assertEquals('foo', $stack[count($stack)-1]); $this->assertNotEmpty($stack); return $stack; } /** * @depends testPush */ public function testPop(array $stack) { $this->assertEquals('foo', array_pop($stack)); $this->assertEmpty($stack); } ``` 在上例中,第一個測試, testEmpty\(\),創建了一個新數組,并斷言其為空。隨后,此測試將此基境作為結果返回。第二個測試,testPush\(\),依賴于 testEmpty\(\) ,并將所依賴的測試之結果作為參數傳入。最后,testPop\(\) 依賴于 testPush\(\)。 ## @dataProvider 標注dataProvider 測試方法可以接受任意參數。這些參數由數據供給器方法提供。用 @dataProvider 標注來指定使用哪個數據供給器方法。 數據供給器方法必須聲明為 public,其返回值要么是一個數組,其每個元素也是數組 例子:使用帶有命名數據集的數據供給器 ```php /** * @dataProvider additionProvider */ public function testAdd($a, $b, $expected) { $this->assertEquals($expected, $a + $b); } public function additionProvider() { return [ 'adding zeros' => [0, 0, 0], 'zero plus one' => [0, 1, 1], 'one plus zero' => [1, 0, 1], 'one plus one' => [1, 1, 3] ]; } ``` 如果測試同時從 @dataProvider 方法和一個或多個 @depends 測試接收數據,那么來自于數據供給器的參數將先于來自所依賴的測試的。來自于所依賴的測試的參數對于每個數據集都是一樣的 例子: 在同一個測試中組合使用 @depends 和 @dataProvider ```php public function provider() { return [['provider1'], ['provider2']]; } public function testProducerFirst() { $this->assertTrue(true); return 'first'; } public function testProducerSecond() { $this->assertTrue(true); return 'second'; } /** * @depends testProducerFirst * @depends testProducerSecond * @dataProvider provider */ public function testConsumer() { $this->assertEquals( ['provider1', 'first', 'second'], func_get_args() ); } ``` ## 各種簡易斷言 assertEquals assertEmpty assertNotEmpty ………………
                  <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>

                              哎呀哎呀视频在线观看