Я пытаюсь выполнить модульное тестирование функции, которая использует зависимость с некоторым интерфейсом. Я хочу издеваться над этим интерфейсом, используя moq. Интерфейс имеет такую функцию:
int Command(CommandType commandType, string commandText, params IDbDataParameter[] parameters);
'Обычный' класс, реализующий интерфейс, будет использовать параметры IDbDataParameter и устанавливать для них некоторые значения. Эти значения затем используются в функции, которая вызывает командную функцию на интерфейсе. Кто-нибудь знает, как я настраиваю фиктивный объект, чтобы при вызове функции команды для фиктивного объекта он устанавливал значения для IDbDataParameter, который он получает в качестве входных данных?
Итак, функция, которую я хочу протестировать, и в которой Вызываемая командная функция выглядит следующим образом:
var pInput = DbDataParameter();
var pOutput = DbDataParameter();
Dependency.Command(Type, Name, pInput, pOutput);
if (pOutput.Value != null)
{
Do Something
}
Я пытался использовать функцию обратного вызова, как показано ниже, но это не работает. Переменная массива - это массив, в котором значения устанавливаются так, как они необходимы в тестируемой функции.
Mock.Setup(o => o.Command(It.IsAny<CommandType>(), It.IsAny<string>(), It.IsAny<IDbDataParameter[]>())).
Callback<CommandType, string, IDbDataParameter[]>((c, s, p) => p = array);