SilverStripe Sapphire Функциональное тестирование по запросу POST всегда возвращает статус 404 - PullRequest
0 голосов
/ 20 марта 2020

Я работаю над проектом SilverStripe. Я пытаюсь написать функциональные тесты для моего приложения, следуя этой документации, https://docs.silverstripe.org/en/4/developer_guides/testing/functional_testing/. Я тестирую запрос POST. Но это не работает. Вы можете увидеть мой код ниже.

У меня есть класс контроллера с именем CustomFormPageController со следующим кодом.

class CustomFormPageController extends PageController
{
    private static $allowed_actions = [
        'testPostRequest',
    ];

    private static $url_handlers = [
        'testPostRequest' => 'testPostRequest',
    ];

    public function testPostRequest(HTTPRequest $request)
    {
        if (! $request->isPOST()) {
            return "Bad request";
        }

        return "Request successfully processed";
    }
}

У меня также есть класс страницы для этого контроллера с именем CustomFormPage. Ниже приведена реализация класса.

class CustomFormPage extends Page
{

}

Я пытаюсь проверить, что я пытаюсь проверить, что метод testPostRequest возвращает правильное значение.

Ниже приведен мой тестовый класс

class CustomFormPageTest extends FunctionalTest
{
    protected static $fixture_file = 'fixtures.yml';

    public function testTestingPost()
    {
        $formPage = $this->objFromFixture(CustomFormPage::class, 'form_page');

        $response = $this->post($formPage->URLSegment . '/testPostRequest', [
            'name' => 'testing'
        ]);

        var_dump($response);
    }
}

Ниже приведен мой файл fixtures.yml.

SilverStripe\CMS\Model\SiteTree:
    sitetree_page_one:
        ID: 1
        ClassName: CustomFormPage
        Title: Page Title 1
        URLSegment: custom-form-page
CustomFormPage:
    form_page:
        ID: 1
        Title: Page Title 1
        URLSegment: custom-form-page

Когда я запускаю тест, он всегда возвращает 404 статус не найден, даже если страница создана в базе данных. Чего не хватает в моем коде и как я могу это исправить?

1 Ответ

0 голосов
/ 20 марта 2020

Я только что нашел решение. Нам нужно опубликовать sh страницу в тесте следующим образом.

$formPage->publish("Stage", "Live");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...