Я новичок в использовании tSQLt и немного борюсь с доступными функциями assert. Метод tSQLt.AssertEmptyTable великолепен, но как применить к нему условие not, т.е. я хочу утверждать, что таблица содержит данные?
Есть ли способ установить условие not с помощью tSQLt?
Ответы (1)
Это зависит от того, что вы на самом деле хотите протестировать. Вы хотите проверить содержимое строк и столбцов в этой таблице или только наличие одной или нескольких строк?
Если первое, то tSQLt.AssertEqualsTable позволит вам сравнить содержимое одной таблицы (например, таблицы #expected, заполненной ожидаемыми значениями) с тестируемой таблицей EXEC tSQLt.tSQLt.AssertEqualsTable '#expected', 'my_table';
. Одной из полезных особенностей этого утверждения является то, что проверяются только столбцы в #expected. Таким образом, если #expected имеет десять столбцов, а my_table — двенадцать, проверяется только содержимое этих десяти столбцов, два других будут игнорироваться этим утверждением. Это может быть полезно, например, когда эти два столбца заполняются автоматически и их сложнее тестировать, например. столбец IDENTITY и GETDATE() по умолчанию. Очевидно, что если #expected имеет столбцы, которых нет в my_table, тест все равно не пройдет.
Если вы просто хотите проверить, есть ли какие-либо данные в таблице, вы можете сделать что-то вроде IF NOT (SELECT COUNT(*) FROM my_table) > 0 EXEC tSQLt.Fail 'my_table contains no data'