10月CMS PHPUnit路由测试

时间:2017-08-17 16:07:25

标签: laravel phpunit laravel-routing octobercms octobercms-plugins

我尝试使用PHPUnit为10月CMS插件的自定义路由编写一些测试,但遇到一些错误,导致测试运行正常。

每个测试在单独运行时通过,但是当作为一组运行时,第一个测试将通过,其余测试将失败并出现500个错误。失败测试的错误消息是:

in Resolver.php line 44
at HandleExceptions->handleError('8', 'Undefined index: myThemeName',
'/Users/me/src/myProject/vendor/october/rain/src/Halcyon/Datasource/
Resolver.php', '44', array('name' => 'myThemeName')) in Resolver.php line 
44

测试用例如下所示:

class RoutesTest extends PluginTestCase
{
  protected $baseUrl = "/";

  public function setUp() {
    parent::setUp();
    DB::beginTransaction();
 }

  public function tearDown()
  {
    DB::rollBack();
    parent::tearDown();
  }

  public function testRootPath()
  {
    $response = $this->call('GET', '/');
    $this->assertEquals(200, $response->status());
  }

  public function testIntroPath()
  {
    $response = $this->call('GET', '/intro');
    $this->assertEquals(200, $response->status());
  }

  etc...
}

3 个答案:

答案 0 :(得分:0)

我不知道原因,但是如果您在--process-isolation电话上添加标记phpunit,我认为可能是缓存问题

答案 1 :(得分:0)

我们最终使用curl发出实际请求并从中获取响应代码。

ng-if

现在所有测试都没有使用隔离过程。

答案 2 :(得分:0)

不幸的是没有解决方案,只是一个不同的角度。我认为这与十月"测试"有关。配置(config / testing / cms.php)。 这将在目录" tests / fixtures / themes / pages /"中查找文件。它在那里找到的index.htm文件,将url-parameter设置为' /'。 这就是为什么phpunit会找到它,而不是其他网址。 我已经看到了针对该问题的几个建议的解决方案,但它们都没有为我工作:

  1. 使用" Config :: set(' cms.activeTheme',' myTheme');"在进行测试之前。
  2. 更改" pluginsPathLocal"来自" base_path(' tests / fixtures / plugins')" to" base_path(' plugins')"在config / testing / cms.php
  3. 更改" themesPathLocal"来自" base_path(' tests / fixtures / themes')"到" base_path('主题')"在config / testing / cms.php
  4. 如果我能弄清楚如何以正确的方式访问我的主题页面之一,生活会变得如此简单........