Я работаю над проектом 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 статус не найден, даже если страница создана в базе данных. Чего не хватает в моем коде и как я могу это исправить?