Silex 2升级后WebTestCase失败

时间:2016-06-06 13:30:56

标签: php phpunit silex pimple

我对控制器测试有以下基础:

public function createApplication() {
     include __DIR__ . '../web/index_dev.php';

     $app['debug'] = true;
     $app['session.test'] = true;
     $app['helper'] = function ($app) {
            return new TestHelper($app);
     }; // fails!!

     return $app;
  }

  public function setUp() {
     parent::setUp();

     $this->client = parent::createClient();
 }

在Silex 1.3上它运行良好,但在升级为v2之后它在标记线处失败。一旦我发表评论 - 一切都很好。

UPD#1:我弄清楚它失败的原因:Cannot override frozen service "helper".我理解错误的含义,但无法理解如何解决它。这是一个测试用例,所以我需要将它替换为对象的mock / test实现,但不能..

1 个答案:

答案 0 :(得分:0)

您的问题是Pimple容器的升级。 The Pimple version of Silex 2 freezes services once you get them

所以你的问题是你以前在你的代码上获得'帮助'服务。您应该重构代码,以便在启动应用程序时不会获得服务。