2016-10-25 8 views
0

Мне нужно выполнить единый тест метода, который запрашивает DocumentDb с использованием Linq и использует одну из предопределенных UserDefinedFunction «IS_DEFINED». Когда я пытаюсь отключить этот метод, издеваясь над частью DocumentDb, он выдает исключение «Этот метод следует вызывать только в выражении Linq для вызова пользовательской функции».Методы модульного тестирования с UserDefinedFunction

public void GetRequiredData() 
{ 
    var data = docDbClient.GetDataAsQueryable("some parameters").Where((bool)UserDefinedFunctionProvider.Invoke("IS_DEFINED"), somefield); 
} 

GetDataAsQueryable метод получить данные из documentDb которых я издевался, но UserDefinedFunctionProvider.Invoke бросает исключение, как он не доступен в рамках модульного тестирования.

Как я могу издеваться над UDF? Есть ли другой способ, которым я могу тестировать этот метод.

[UPDATE]

Я попытался с помощью Expression что-то вроде ниже

Expression<Func<object, bool>> expr = obj => (bool) UserDefinedFunctionProvider.Invoke("IS_DEFINED", obj); 

var data = docDbClient.GetDataAsQueryable("some parameters").Where(expr.Compile()(someobject)); 

Он выдает ошибку «Nullable объект должен иметь значение»

Что является причиной этой ошибки и как это исправить?

ответ

0

В настоящий момент вы не можете высмеивать UDF через UserDefinedFunctionProvider.