ОП конкретно спрашивает, как это сделать в контексте модульного теста tSQLt.
Для тех, кто не знает, tSQLt.FakeTable временно заменяет реальную таблицу на макет с таким жеимена схем, таблиц и столбцов плюс все те же типы данных, но без ограничений.Таким образом, все столбцы допускают NULL, и все ключи, значения по умолчанию, ограничения проверки и даже свойство IDENTITY удаляются на время теста.Это может быть полезно при написании модульных тестов для одной таблицы, которая имеет много зависимостей - это минимизирует настройки, необходимые для каждого теста.В конце каждого теста транзакция, в которой был выполнен этот тест, откатывается и возвращается исходная структура таблицы.
Теперь вернемся к актуальному вопросу, в то время как таблица tSQLt.Fake допускает определенные функции исходногоТаблица, которая будет сохранена в макете, включая автоинкремент, вычисляемые столбцы и ограничения по умолчанию, обнуляемость не является одной из этих функций.Хотя если @SebastianMeine или @dennislloydjr читает это, такая функция может оказаться полезной.
Я не верю, что не существует автоматического способа применить NOT NULL к столбцам в фальшивой таблице, однакоэто поднимает вопрос о вашем случае использования.Хотя FakeTable невероятно полезен во многих тестовых сценариях, есть случаи, когда вы хотите запустить один или несколько тестов для реальной таблицы.Очевидным примером здесь является хранимая процедура, предназначенная для вставки новой строки в эту таблицу.Если новый столбец NOT NULL добавляется в таблицу после записи sproc вставки, процедура завершится ошибкой, поскольку она не вставляет значение в новый обязательный столбец.Вы определенно захотите проверить это при тестировании и проведении хотя бы одного теста этой хранимой процедуры с реальной таблицей, которая обнаружит эту ошибку до того, как вы приступите к работе.
Если ваш сценарий использования требует, чтобы только определенныйЕсли для столбца задано значение NOT NULL, то вы можете сделать это вручную UPDATE myTable ALTER COLUMN myColumn <datatype> NOT NULL
после вызова tSQLt.FakeTable, хотя опасность такого подхода заключается в том, что если в будущем тип данных или обнуляемость этого столбца изменятся, у вас не будет способа автоматически изменитьопределение столбца в вашем тесте - что делает его менее надежным.
Извините, на ваш вопрос нет простого ответа.