0

我正在为 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 依赖的情况下对这个方法进行单元测试?

谢谢

4

1 回答 1

3

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

这样做可以让您模拟会话对象并检查,例如,该方法getFlashBag是否被调用。

如果您在课堂上需要容器,我建议您使用WebTestCase.

于 2013-10-09T20:22:25.773 回答