Я пишу тесты для своего PHP-приложения, но у меня возникли проблемы с передачей данных на мой контроллер с помощью file_put_contents("php://input", ...). Функция должна прочитать входные данные (php://input) и найти пользователя по предоставленному идентификатору, но она всегда возвращает ошибку о том, что входные данные неполны.
Тестовый класс: Вот мой тестовый код с использованием PHPUnit:
class UsuarioControllerTest extends TestCase
{
protected function setUp(): void
{
$this->usuarioMock = $this->createMock(Usuario::class);
$this->usuarioController = new UsuarioController($this->usuarioMock);
}
public function testFindByIdReturnsUserWhenUserExists()
{
$userId = 2;
$userData = ["id" => $userId, "nome" => "Jon Doe"];
// Mock the method that retrieves user by ID
$this->usuarioMock->method('findById')->with($userId)->willReturn($userData);
// Simulate setting input as JSON
$_SERVER["CONTENT_TYPE"] = "application/json";
file_put_contents("php://input", json_encode(["id" => $userId]));
// Capture the output
ob_start();
$this->usuarioController->findById();
$output = ob_get_clean();
// Assert the response matches the expected JSON
$this->assertJsonStringEqualsJsonString(json_encode($userData), $output);
}
}
Метод контроллера: вот метод findById в моем контроллере:
public function findById()
{
$data = json_decode(file_get_contents("php://input"));
if (isset($data->id)) {
try {
$user = $this->usuario->findById($data->id);
if ($user) {
http_response_code(200);
echo json_encode($user);
} else {
http_response_code(404);
}
} catch (\Throwable $th) {
http_response_code(500);
}
} else {
http_response_code(400);
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... s-in-phpun
Ошибка чтения ввода из php://input во время теста с file_put_contents в PHPUnit ⇐ Php
Кемеровские программисты php общаются здесь
1731227196
Anonymous
Я пишу тесты для своего PHP-приложения, но у меня возникли проблемы с передачей данных на мой контроллер с помощью file_put_contents("php://input", ...). Функция должна прочитать входные данные (php://input) и найти пользователя по предоставленному идентификатору, но она всегда возвращает ошибку о том, что входные данные неполны.
Тестовый класс: Вот мой тестовый код с использованием PHPUnit:
class UsuarioControllerTest extends TestCase
{
protected function setUp(): void
{
$this->usuarioMock = $this->createMock(Usuario::class);
$this->usuarioController = new UsuarioController($this->usuarioMock);
}
public function testFindByIdReturnsUserWhenUserExists()
{
$userId = 2;
$userData = ["id" => $userId, "nome" => "Jon Doe"];
// Mock the method that retrieves user by ID
$this->usuarioMock->method('findById')->with($userId)->willReturn($userData);
// Simulate setting input as JSON
$_SERVER["CONTENT_TYPE"] = "application/json";
file_put_contents("php://input", json_encode(["id" => $userId]));
// Capture the output
ob_start();
$this->usuarioController->findById();
$output = ob_get_clean();
// Assert the response matches the expected JSON
$this->assertJsonStringEqualsJsonString(json_encode($userData), $output);
}
}
Метод контроллера: вот метод findById в моем контроллере:
public function findById()
{
$data = json_decode(file_get_contents("php://input"));
if (isset($data->id)) {
try {
$user = $this->usuario->findById($data->id);
if ($user) {
http_response_code(200);
echo json_encode($user);
} else {
http_response_code(404);
}
} catch (\Throwable $th) {
http_response_code(500);
}
} else {
http_response_code(400);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79174447/error-reading-input-from-php-input-during-test-with-file-put-contents-in-phpun[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия