Phpunit 银条4:功能测试;获得;方法返回404状态,尽管页面在那里。

Phpunit 银条4:功能测试;获得;方法返回404状态,尽管页面在那里。,phpunit,silverstripe,silverstripe-4,Phpunit,Silverstripe,Silverstripe 4,我想用这个测试类测试一个控制器 <?php use SilverStripe\Dev\FunctionalTest; class SitePageControllerTest extends FunctionalTest { protected static $fixture_file = 'site/tests/fixturesSitePage.yml'; public function testViewSitePage() { $obj =

我想用这个测试类测试一个控制器

<?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());
    }
}

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

页面是版本化的,并且此页面不会在您请求的位置发布,因此功能测试模拟前端web请求,默认情况下,该请求是从live(published)阶段提供的

您可以通过将
?stage=stage
附加到请求URL,或在功能测试中使用
受保护的静态$use\u draft\u site=true
来使用草稿站点(这在4.2中被弃用)

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

SitePage:
  page1:
    Title: Page One
    CanViewType: true