Symfony2单元测试使用其他服务的服务类

时间:2013-10-09 18:46:44

标签: php unit-testing symfony

我正在为Symfony2 Bundle做一些单元测试(phpunit),我想测试这个方法:

/**
 * Set a flash notification
 * @param array $message
 */
public function setFlashNotification(array $message) {


    if (!isset($message['key'])) {
        throw new \ErrorException("Message array must contains a key");
    }

    if (!isset($message['content'])) {
        throw new \ErrorException("Message array must contains a content");
    }

    $this->container->get('session')->getFlashBag()->add(self::SESSION_KEY . $message['key'], $message['content']);
}

在我的测试中,似乎我需要Symfony2服务容器才能使用会话,但是如何在没有Symfony2 AppKernel.php依赖的情况下对此方法进行单元测试?

由于

1 个答案:

答案 0 :(得分:3)

我认为这个方法是一个类的一部分。作为最佳实践,此类不应将整个容器作为依赖项接收,而应仅需要严格要求的依赖项的子集。 例如,在这种情况下,您应该只注入session

执行此操作可以模拟会话对象,并检查是否调用方法getFlashBag

如果您需要班级中的容器,我建议您使用WebTestCase对其进行功能测试。

相关问题