在phpunit中模拟一个请求

时间:2013-06-27 15:57:47

标签: php symfony tdd phpunit

我正在尝试编写单元测试(phpunit)来涵盖控制器操作。我收到有关getRequest()调用的无效范围的问题。

注意:我是Symfony2和TDD(phpunit)的新手

我想这是因为没有这样的请求?

我的问题是:

  1. 我可以模拟一个请求对象吗?
  2. 我是以正确的方式接近这个吗?我应该将大部分代码放入服务中,然后对服务进行单元测试,并且只对FUNCTIONAL测试控制器吗?
  3. 我认为了解未来的原则是我所追求的,而不是代码行。

1 个答案:

答案 0 :(得分: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");
}