SilverStripe 4:尽管页面在那里,FunctionalTest的“ get”方法返回404状态。

时间:2018-06-20 22:57:26

标签: phpunit silverstripe silverstripe-4

我正在尝试使用此Test类来测试控制器,

<?php

use SilverStripe\Dev\FunctionalTest;

class SitePageControllerTest extends FunctionalTest
{
    protected static $fixture_file = 'site/tests/fixturesSitePage.yml';

    public function testViewSitePage()
    {
        $obj = $this->objFromFixture('SitePage', 'page1');
        $page = $this->get('page-one/');
        $this->assertEquals(200, $page->getStatusCode());
    }
}

和治具。

SitePage:
  page1:
    Title: Page One
    CanViewType: true

但是“ $ this-> get('page-one /');”返回404页面。

1 个答案:

答案 0 :(得分:2)

页面是版本控制的,并且该页面不会在您要求的时候发布,因此功能测试将模拟前端Web请求,默认情况下该请求是从实时(发布)阶段提供的。

您可以通过在请求URL上附加?stage=Stage或在功能测试中使用protected static $use_draft_site = true(在4.2中弃用)来使用草稿网站。

请注意,FunctionalTest不会登录用户,因此您可能还需要以某种级别的权限登录,即$this->logInWithPermission('ADMIN')