我必须对使用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对象必须有一个值”
此错误的原因是什么以及如何解决?
答案 0 :(得分:0)
目前您无法通过UserDefinedFunctionProvider模拟UDF。