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

PHPUnit assertDatabaseHas() возвращает TypeError

Пытаюсь протестировать модель здесь, но каждый раз, когда я пытаюсь использовать метод assertDatabaseHas, он выдает ошибку типа. Laravel 5.4 и PHPUnit 6.

    PHPUnit 6.1.4 by Sebastian Bergmann and contributors.

..E                                                                 3 / 3 (100%)

Time: 815 ms, Memory: 10.00MB

There was 1 error:

1) Tests\Unit\ModelTest::test_model_creation
TypeError: Argument 2 passed to PHPUnit\Framework\Assert::assertThat() must be an instance of PHPUnit\Framework\Constraint\Constraint, instance of Illuminate\Foundation\Testing\Constraints\HasInDatabase given, called in /home/vagrant/domains-api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithDatabase.php on line 22

/home/vagrant/domains-api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithDatabase.php:22
/home/vagrant/domains-api/tests/Unit/ModelTest.php:36

ERRORS!
Tests: 3, Assertions: 2, Errors: 1.

Код внутри тестового класса:

$this->assertDatabaseHas('domains', [
            'domain' => $domain,
            'domain_type' => 'full_domain',
        ]);

Я использую документы laravel в качестве справки, и синтаксис кажется правильным (по крайней мере, для меня). https://laravel.com/docs/5.4/database-testing#introduction

Заранее благодарю за любую помощь.

30.05.2017

Ответы:


1

Проблема, похоже, в том, что Laravel 5.4 не поддерживает пространство имен для PHPUnit, представленное в версии 6.

Если сравнить ветки, то легко увидеть:

https://github.com/laravel/framework/blob/5.4/src/Illuminate/Foundation/Testing/Constraints/HasInDatabase.php#L8

vs.

https://github.com/laravel/framework/blob/master/src/Illuminate/Foundation/Testing/Constraints/HasInDatabase.php#L6-L8

Я думаю, что лучшим решением будет либо запустить тесты с помощью PHPUnit 5.x, либо, возможно, обновить laravel/framework, чтобы использовать master. Поскольку мастер может содержать критические изменения, на данный момент первый подход кажется более безопасным.

30.05.2017
  • Теперь работает нормально... Измените мой composer.lock, чтобы он придерживался PHPunit 5.7.* (ранее он был ~ 5.7), и после запуска обновления композитора метод assertDatabaseHas теперь работает так, как должен. 30.05.2017
  • Новые материалы

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

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

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

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

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

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

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