Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 17.05.2017 11:36:29

respectpick
Откуда: Москва
Сообщений: 83

Почему unit тест не делает апдейт записи в бд?

Есть метод, который делает апдейт записи в бд. Если запрос посылается через юзер - интерфейс то все ок и апдейт срабатывает.

Вот код апдейта

 $game_periods_table = DB::table('game_periods')->where('id', $id);
          $current_update_array = [];

          if(array_key_exists('A', $count_throws)){
              $current_update_array['count_throws_a'] =  $count_throws['A'];
          }

          if(array_key_exists('B', $count_throws)){
              $current_update_array['count_throws_b'] =  $count_throws['B'];
          }

          $current_update_array['updated_at'] = date('Y-m-d H:i:s');

          $game_periods_table->update($current_update_array);

А вот так выглядит юнит тест этого метода

protected $bgame;
protected $game_id = 95;

public function setUp(){
    parent::setUp();

    $game = new Game();
    $game = $game::find($this->game_id);

    if(is_null($game)){
        $this->fail('Game is not found!');
    }

    $this->bgame = new BGame($game);
}

public function testUpdateThrows(){
    $test_array = [
        'first_period_throws' => ['A' => 1, 'B' => 2],
        'second_period_throws' => ['A' => 3, 'B' => 4],
        'third_period_throws' => ['A' => 5, 'B' => 6],
        'ot_period_throws' => ['A' => 7, 'B' => 8],
    ];

    $this->assertTrue($this->bgame->updateThrows($test_array));
}

Тест успешно проходится, однако запись в БД не обновляется. Если делаю дамп апдейта

dd($game_periods_table->update($current_update_array));

то возвращается "1", т.е. одна строка была зтронута.

Для юнит тестов использую тестовую базу, которая идентична основной.

Не в сети

#2 17.05.2017 11:37:07

respectpick
Откуда: Москва
Сообщений: 83

Re: Почему unit тест не делает апдейт записи в бд?

ups

Изменено respectpick (17.05.2017 11:37:52)

Не в сети

#3 17.05.2017 11:43:18

Re: Почему unit тест не делает апдейт записи в бд?

так вроде тесты должны после выполнения теста откатывать базу к изначальному состоянию. изменённое значение можно увидеть только внутри конкретного теста

Не в сети

#4 17.05.2017 11:56:46

respectpick
Откуда: Москва
Сообщений: 83

Re: Почему unit тест не делает апдейт записи в бд?

constb пишет:

так вроде тесты должны после выполнения теста откатывать базу к изначальному состоянию. изменённое значение можно увидеть только внутри конкретного теста

как ни странно все заработало. само.

Не в сети

Подвал раздела