Как я перечисляю все доступные представления конкретной таблицы в SQLite?

Часто модульные тесты основаны на фиктивном объекте или дразнят данные. Мне нравится писать три вида модульных тестов:

  • "переходные" модульные тесты: они создают свои собственные ложные объекты/данные и тестируют их функцию с нею, но уничтожают все и не оставляют трассировки (как никакие данные в тестовой базе данных)
  • "персистентный" модульный тест: они тестируют функции в Ваших объектах/данных создания кода, которые будут необходимы более усовершенствованной функции позже для их собственного модульного теста (избегающий для тех усовершенствованная функция для воссоздания каждый раз их собственного набора ложных объектов/данных)
  • "персистентные" модульные тесты: модульные тесты с помощью ложных объектов/данных, которые уже являются там (потому что созданы на другой сессии модульного теста) персистентными модульными тестами.

точка должна постараться не воспроизводить все , чтобы быть в состоянии протестировать каждый функции.

  • я выполняю третий вид очень часто, потому что все ложные объекты/данные уже там.
  • я выполняю второй вид каждый раз, когда мое образцовое изменение.
  • я выполняю первый, чтобы проверить очень простые функции время от времени, проверить к основным регрессиям.
8
задан Robert Harvey 19 October 2009 в 22:30
поделиться

2 ответа

Используйте Функция charindex в extension-functions.c для поиска в столбце Sql в sqlite_master имени вашей таблицы.

extension-functions.c (см. нижнюю часть ] this page ) - это пользовательский модуль, который предоставляет математические функции и функции расширения строк для SQL-запросов с использованием механизма загружаемых расширений.

Ваш окончательный запрос должен выглядеть примерно так (не проверено):

SELECT name from sqlite_master 
  WHERE type ='view' AND charindex(Sql, "tableName") > 0;
1
ответ дан 5 December 2019 в 22:19
поделиться

Нет необходимости использовать extension-functions.c; просто используйте оператор «LIKE»:

SELECT name FROM sqlite_master WHERE type = 'view' and sql LIKE "%_tablename_%";

Вы получите ложные совпадения, конечно, если у вас есть имена таблиц, которые содержат другие имена таблиц в качестве подстрок, или которые являются подстроками общих зарезервированных слов SQL (например, «здесь» или «ром "). Вы можете устранить последнее, выполнив следующие действия:

SELECT name FROM sqlite_master WHERE type = 'view' AND sql LIKE "% FROM %tablename% WHERE %";

предоставив представления, которые вы пытаетесь найти, соответствуют типичной модели.

5
ответ дан 5 December 2019 в 22:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: