Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Есть метод, который делает апдейт записи в бд. Если запрос посылается через юзер - интерфейс то все ок и апдейт срабатывает.
Вот код апдейта
$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", т.е. одна строка была зтронута.
Для юнит тестов использую тестовую базу, которая идентична основной.
Не в сети
ups
Изменено respectpick (17.05.2017 11:37:52)
Не в сети
так вроде тесты должны после выполнения теста откатывать базу к изначальному состоянию. изменённое значение можно увидеть только внутри конкретного теста
Не в сети
так вроде тесты должны после выполнения теста откатывать базу к изначальному состоянию. изменённое значение можно увидеть только внутри конкретного теста
как ни странно все заработало. само.
Не в сети
Страницы 1