Задать вопрос
ZetIndex_Ram
@ZetIndex_Ram

Почему не работает автотестирование в Laravel?

Заказчику понадобилось Unit-тестирование (причем тесты не сильно сложные) (причем именно unit, а не Feature-тесты --> обычно я Feature-тесты делаю в Postman).

Что я сделал --> настроил добавил три строчки в конец phpunit.xml
<env name="APP_ENV" value="testing"/>
<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value=":memory:"/>


и в тестовый класс (Unit/ExampleTest класс) --> даже не стал создавать новый, добавил два метода:

Первый:
60ab703b92a11797037909.png

Второй:
public function testGetTotalSumReceipt() {

      $data_publications = [
        [
          "title" => "Капитанская дочка",
          "count" => 43,
          "price" => 349,
        ],
        [
          "title" => "Старуха Изергиль",
          "count" => 64,
          "price" => 259,
        ],
        [
          "title" => "Горе от ума",
          "count" => 76,
          "price" => 149,
        ],
        [
          "title" => "Обломов",
          "count" => 32,
          "price" => 529,
        ],
        [
          "title" => "Война и мир",
          "count" => 26,
          "price" => 129,
        ]
      ];

      $data_deliveries = [
        [
          'name' => 'Курьером',
        ],
        [
          'name' => 'Самовывоз',
        ]
      ];

      DB::table('publications')->insert($data_publications);
      DB::table('deliveries')->insert($data_deliveries);

      $receipt = Receipt::create([
        'code' => 'R-12345678',
        'id_employee' => rand(1,10),
        'id_client' => rand(1,10)
      ]);

      Subscription::create([
        'code' => AppHelper::generate_code('S',Subscription::class),
        'id_publication' => 1, // 349
        'count' => 2,
        'id_receipt' => $receipt->id,
        'start_at' => Carbon::now()->addWeeks(rand(1,3)),
        'end_at' => Carbon::now()->addMonths(rand(1,4)),
      ]);

      Subscription::create([
        'code' => AppHelper::generate_code('S',Subscription::class),
        'id_publication' => 2, // 259
        'count' => 3,
        'id_receipt' => $receipt->id,
        'start_at' => Carbon::now()->addWeeks(rand(1,3)),
        'end_at' => Carbon::now()->addMonths(rand(1,4)),
      ]);

      Subscription::create([
        'code' => AppHelper::generate_code('S',Subscription::class),
        'id_publication' => 3, // 149
        'count' => 4,
        'id_receipt' => $receipt->id,
        'start_at' => Carbon::now()->addWeeks(rand(1,3)),
        'end_at' => Carbon::now()->addMonths(rand(1,4)),
      ]);

      // 349 + 777 + 596 = 1722

      $this->assertEquals(1722,$receipt->calculateFullSum());
    }


Во втором методе я проверяю итоговую цену, которая сформировалась из подписок --> это как итоговая цена обычного товарного чека в супермаркете, сложенная из товаров.

При запуске тестов php artisan test высвечивается следующая ошибка:
60ab736835b57773083854.png

Моя схема БД:
60ab72e5c9f09675514196.png
  • Вопрос задан
  • 247 просмотров
Подписаться 2 Простой 12 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы