Должны ли мы также использовать те миграции, которые используются только для изменения данных в базе данных в нашем тестировании? - PullRequest
0 голосов
/ 21 сентября 2019

У нас есть группа миграций (более 200), большинство из которых предназначены для изменения данных в базе данных и влияют на наше тестирование.Например, у нас есть миграция, подобная этой

 public function up()
    {
        $deleteId = DB::table('lookups')
            ->where('code', '=', 'VI')
            ->where('type', '=', 'country')
            ->where('value', '=', 'U.S. Virgin Islands')
            ->first(['id'])->id;

           DB::table('lookups')
                ->where('id', '=', $deleteId ?? 0)
                ->update(['deleted_at' => Carbon::now()->toDateTimeLocalString()]);
    }

Как вы можете видеть, это выдаст ошибку, если мы запустим ее в тестовой среде.потому что запись не существует в среде тестирования.(мы используем фейкер для этой цели).и мой вопрос: должны ли мы как-то пропустить этот вид миграций или каково лучшее решение?

1 Ответ

0 голосов
/ 23 сентября 2019

Интересный вопрос.Я собираюсь сделать несколько предположений в своем ответе, поэтому просмотрите их и дайте мне знать, если какие-либо из них неверны.

  1. Вы являетесь частью команды разработчиков.
  2. В клиентесреде, если запись не существует во время выполнения миграции, то это ошибка в среде.
  3. Вы явно не тестируете эту миграцию в этом тесте.

Итак, во-первых, в моей голове прозвенели несколько тревожных звонков.По сути, вы говорите, что ваша тестовая среда не соответствует среде клиента.Это, конечно, не обязательно проблема, но убедитесь, что ваша тестовая среда достаточно репрезентативна для среды заказчика, чтобы тесты были значимыми.

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

Предоставляете ли вы поддельную базу данных, например, базу данных в памяти для тестов?Если это так, просто добавьте запись при запуске базы данных, чтобы можно было запустить миграцию.

Вы издеваетесь над вызовами в базу данных?Если да, пытались ли вы посмеяться над вызовом этой функции и по сути сделать ее неактивной?

...