0

我有以下用于控制器测试的基础 las:

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".我理解错误的含义,但不明白如何修复它。这是一个测试用例,所以我需要用对象的模拟/测试实现替换它,但不能..

4

1 回答 1

0

您的问题是 Pimple 容器的升级。Silex 2 的 Pimple 版本一旦获得服务就会冻结它们

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

于 2016-06-07T08:02:23.650 回答