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


Symfony2 unit testing service class using other services

我正在为Symfony2捆绑包做一些单元测试(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?

谢谢

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

这样做可以模拟会话对象并检查是否正在调用方法getFlashBag例如。

如果你的类中需要容器,我建议你用WebTestCase对它进行功能测试。