使用UserDefinedFunction进行单元测试方法

时间:2016-10-25 12:33:41

标签: linq lambda user-defined-functions azure-cosmosdb

我必须对使用Linq查询DocumentDb的方法进行单元测试,并使用预定义的UserDefinedFunction“IS_DEFINED”之一。当我尝试对模拟DocumentDb部分的方法进行单元测试时,它会抛出异常“只应在Linq表达式中调用此方法以调用用户定义的函数”。

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

GetDataAsQueryable方法从我嘲笑的documentDb获取数据,但UserDefinedFunctionProvider.Invoke抛出异常,因为它在单元测试范围内不可用。

我如何模拟UDF?有没有其他方法可以对这种方法进行单元测试。

[UPDATE]

我尝试使用类似下面的表达式

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

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

它抛出一个错误“Nullable对象必须有一个值”

此错误的原因是什么以及如何解决?

1 个答案:

答案 0 :(得分:0)

目前您无法通过UserDefinedFunctionProvider模拟UDF。

相关问题