2016-11-24 55 views
0

TDD聲稱我應該先寫測試。假設我想寫一個服務,如果我還沒有任何東西,我該如何開始爲服務編寫測試?什麼是第一個測試?嘗試實例化服務並獲得異常?測試不存在的代碼

基於Laravel的PHP例子:

class ServiceTest extends TestCase 
{ 
    public function testServiceExists() 
    { 
     $service = App::make('grid'); 
    } 
} 

結果:

PHPUnit 5.5.4 by Sebastian Bergmann and contributors.

E 1 /1 (100%)

Time: 123 ms, Memory: 14.00MB

There was 1 error:

1) ServiceTest::testServiceExists ReflectionException: Class grid does not exist

/home/supertrall/domains/md.local/laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php:749 /home/supertrall/domains/md.local/laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php:644 /home/supertrall/domains/md.local/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:709 /home/supertrall/domains/md.local/laravel/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:237 /home/supertrall/domains/md.local/laravel/tests/Grid/ServiceTest.php:20

ERRORS! Tests: 1, Assertions: 0, Errors: 1.

回答

2

遇到這樣的錯誤是在TDD一件好事。這意味着你需要解決錯誤,以便遇到另一個錯誤。

在TDD中進行編碼時,您編程爲wishful thinking。換句話說,在你實現組件之前,你需要編寫一些使用組件的代碼。這有助於發現您需要的功能和數據,並且在此發現之後,您將可以使用更簡單有用的API。

儘管TDD概念並不是很難學,但習慣TDD的測試優先開發方法卻很困難且耗時。你走在正確的軌道上,只需閱讀更多內容並進行更多的測試以適應方法論。