我正在为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
对它进行功能测试。