Итак, я пытаюсь заглушить соединитель базы данных, чтобы написать тесты для него. Проблема в том, что коннектор базы данных - довольно тонкий слой, а запросы к нему несколько открытые. Я хочу, чтобы мой код мог запрашивать переменную из базы данных, и соединитель должен быть в порядке с этим. Подпись для этого вызова выглядит примерно так:
dim = getDimension(self,dimensionName,otherIndentifyingInformation)
(Это все в MATLAB - надеюсь, ответ не зависит от языка или, по крайней мере, недостижим в MATLAB.)
Когда я использую его в своем коде, dimensionName
- это одна из немногих вещей, которые хранятся в базе данных. Если код вызывает его, а он не существует, это нормально. Проблема в том, что я хочу протестировать некоторый код, который делает два вызова getDimension
, что-то вроде:
alt = conn.getDimension('alt',otherID);
str = conn.getDimension('str',otherID);
По (надеюсь) очевидным причинам, alt
и str
не обязательно будут одинаковыми. На самом деле, они, как правило, нет.
Итак, мой вопрос. Если я хочу заглушить getDimension, чтобы вернуть хорошие тестовые значения, как я могу это сделать? Создание getDimensionAlt
кажется глупым, поскольку число вещей, которые могут появиться из базы данных, несколько неограниченно, и это было бы трудно поддерживать. Есть ли лучший способ, чем поместить логику в мои объекты-заглушки? Это просто кажется неправильным путем ...
РЕДАКТИРОВАТЬ: была предложена настройка testDB. Разве мне не пришлось бы устанавливать testDB для каждого тестового случая? И в каждом тесте мне нужно было создать соединение с БД, вернуть его как заглушку, запустить тест, а затем очистить соединение с БД. Похоже, что для каждого теста это будет очень сложно, особенно если это не та система, которую я тестирую.
Полагаю, можно установить testDB и каждый раз заполнять его соответствующими значениями. Это хорошая практика?
РЕДАКТИРОВАТЬ 2: Возможно, мой вопрос неясен. У меня есть небольшой кусок кода, который я пытаюсь проверить. Это не намного сложнее, чем те две строки выше, и я хотел бы проверить это чисто. Проблема в том, что заглушка вызова getDimension
зависит от аргументов. Мне не нужно повторно использовать эту заглушку с другими тестами.
Я думаю, что ответом может быть: «Это нормально, если в заглушках есть простая логика». Все это смущает тот факт, что в MATLAB нет анонимных классов или среды-заглушки, так что это сложно, но я хочу убедиться, что то, что я делаю, концептуально понятно, прежде чем я уйду и напишу среду-заглушку в MATLAB. *