Модульный тест для отсутствующих миграций - PullRequest
1 голос
/ 25 октября 2019

Можете ли вы написать модульный тест, который проверяет, что все сценарии миграции сгенерированы?

Я хотел реализовать это, чтобы сборка CI не выполнялась, когда кто-то забывает Add-Migration. Но база данных ef core в памяти не допускает никаких «реляционных» вещей, и SqLite DB не работает, потому что «такой таблицы нет: __EFMigrationsHistory», которая, кажется, известна как , которая не будетисправлено.

Я также искал сгенерированный снимок и, если есть какой-либо способ сравнить это с моей текущей кодовой базой, но не нашел ничего полезного.

Этот тест должен быть легкими работать без реальной БД.

1 Ответ

0 голосов
/ 28 октября 2019

Одним из хакерских решений было бы сравнение Migrations/*Snapshot.cs до и после запуска dotnet ef migrations add <migration>.

Я думаю, это может сработать:

before="$(sha256sum Migrations/*Snapshot.cs | sha256sum)"
dotnet ef migrations add dummy
after="$(sha256sum Migrations/*Snapshot.cs | sha256sum)"
if [ "$before" != "$after" ]; then
    exit 1
fi
...