Nano Hash - криптовалюты, майнинг, программирование

тестирование POST с использованием phpunit в laravel 4

У меня есть маршрут, который выполняет POST для создания данных, и я пытаюсь проверить, должно ли все работать так, как должно быть.

У меня есть строка json, которая будет иметь значения, которые я хочу проверить, но пока тест всегда терпит неудачу, когда я запускаю тест с помощью phpunit:

Кроме того, я знаю, что строка json - это просто строка, но я также не уверен, как использовать строку json для проверки ввода.

мой маршрут:

Route::post('/flyer', 'flyersController@store');

 public function testFlyersCreation()
{
    $this->call('POST', 'flyers');

    //Create test json string
    $json = '{ "name": "Test1", "email": "[email protected]", "contact": "11113333" }';

    var_dump(json_decode($json));



}

Когда я запускаю phpunit, моя ошибка указывает на вызов POST, который говорит «неопределенный индекс: имя»

21.07.2014

Ответы:


1

Я не уверен, правильно ли я понял вопрос, учитывая пример кода, который на самом деле ничего не делает, но если вы спрашиваете, как протестировать почтовый маршрут, который требует данных json в запросе, взгляните на метод call() :

https://github.com/laravel/framework/blob/4.2/src/Illuminate/Foundation/Testing/ApplicationTrait.php

необработанные данные сообщения должны быть в переменной $content.

У меня не установлен Laravel 4, чтобы протестировать его, но у меня он работает в Laravel 5, где функция имеет немного другой порядок параметров:

public function testCreateUser()
{
    $json = '
    {
        "email" : "[email protected]",
        "first_name" : "Horst",
        "last_name" : "Fuchs"
    }';

    $response = $this->call('POST', 'user/create', array(), array(), array(), array(), $json);

    $this->assertResponseOk();
}
04.05.2015

2

Если вы посмотрите на исходный код TestCase вы можете видеть, что метод на самом деле вызывает

call_user_func_array(array($this->client, 'request'), func_get_args());

Это означает, что вы можете сделать что-то вроде этого

$this->client->request('POST', 'flyers', $json );

а затем вы проверяете ответ с помощью

$this->assertEquals($json, $this->client->getResponse());

Ошибка, которую вы получаете, вероятно, вызвана контроллером, потому что он не получает никаких данных.

21.07.2014
  • хм, я попробовал это, и внутри запроса $json я ввожу декодированную строку $json, и она запрашивает массив, но когда я меняю ее на массив, она запрашивает строку. 21.07.2014
  • хм, хорошо, $client — это api.symfony.com/2.0/Symfony /Component/HttpKernel/Client.html. Так что попробуйте так: $this-›client-›request('POST', 'flyers', null, null, null, $json); 21.07.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..