1

我正在尝试使用这个 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 页面。

4

2 回答 2

3

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

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

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

于 2018-06-25T02:01:58.017 回答
0

另一种选择是使用以下方式发布它:$obj->publishRecursive();get()

于 2022-01-22T06:46:08.913 回答