Есть ли способ установить условие not с помощью tSQLt?

Я новичок в использовании tSQLt и немного борюсь с доступными функциями assert. Метод tSQLt.AssertEmptyTable великолепен, но как применить к нему условие not, т.е. я хочу утверждать, что таблица содержит данные?


person Chris Nachand    schedule 24.11.2020    source источник


Ответы (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'

person datacentricity    schedule 25.11.2020
comment
Я искал последнее, просто проверил, есть ли данные в таблице. В конечном итоге я надеялся на что-то вроде NUnit, где вы можете добавить not. перед функцией утверждения. Возможно, это идея для будущего улучшения (например, AssertNotEmptyTable). - person Chris Nachand; 27.11.2020