Итак, я немного искал в интернете, пытаясь выяснить, изобрел ли кто-нибудь колесо здесь.Я хочу написать интеграционный тест, который проанализирует текущий проект, найдет все ссылки на определенный метод, найдет его аргументы, а затем проверит базу данных на наличие этого аргумента.Например:
public interface IContentProvider
{
ContentItem GetContentFor(string descriptor);
}
public class ContentProvider : IContentProvider
{
public virtual ContentItem GetContentFor(string descriptor)
{
// Fetches Content from Database for descriptor and returns in
}
}
Любой другой класс получит IContentProvider, внедренный в их конструктор с помощью IOC, так что они могли бы написать что-то вроде:
contentProvider.GetContentFor("SomeDescriptor");
contentProvider.GetContentFor("SomeOtherDescriptor");
По сути, модульный тест находит всеэти ссылки, найти набор текста ["SomeDescriptor", "SomeOtherDescriptor"], а затем я могу проверить базу данных, чтобы убедиться, что у меня есть строки, определенные для этих дескрипторов.Кроме того, дескрипторы жестко закодированы.
Я мог бы сделать значение enum для всех дескрипторов, но enum имел бы тысячи возможных опций, и это похоже на хак.
Теперь эта ссылка на SO: Как я могу получить всю ссылку с помощью Reflection + C # , в основном говорит, что это невозможно без какого-либо очень продвинутого анализа IL.Уточнить;Мне не нужен Reflector или что-то в этом роде - это просто автоматический тест, который я могу запустить, чтобы, если другие разработчики из моей команды проверят код, который вызывает этот контент, не создавая запись в БД, тест не пройден.
Возможно ли это?Если да, есть ли у кого-нибудь ресурс для просмотра или пример кода для изменения?
РЕДАКТИРОВАТЬ: В качестве альтернативы, возможно, другой метод выполнения этой VS пытается найти все ссылки?Конечный результат - я хочу, чтобы тест не прошел, если запись не существует.