2013-06-27 208 views
2

我正在嘗試編寫一個單元測試(phpunit)來覆蓋控制器的操作。我收到有關getRequest()調用的無效範圍的問題。模擬phpunit中的請求

注:我是一個新手的Symfony2和TDD(PHPUnit的)

我想這是因爲這樣沒有要求?

我的問題是:

  1. 我可以模擬一個請求對象?
  2. 我以正確的方式接近這個嗎?我應該將大部分代碼放入服務中,然後對服務進行單元測試,並且只對功能測試控制器進行測試?

我想知道未來的原則是我所追求的,而不是代碼行。

回答

2

Web測試案例中內置了一個模擬請求。只需擴展它並使用爬蟲來發出請求即可。

例如:

public function testMyController() 
{ 
    $client = static::createClient(); 
    $router = $this->container->get('router'); 
    $url = $router->generate('routeName'); 
    $crawler = $client->request('GET', $url); 

    // check we get a 200 
    $this->assertEquals(200, $client->getResponse()->getStatusCode(), "Unexpected HTTP status code for API Config call"); 
} 
+9

也就是說例子是功能測試不是一個單元測試。 –