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?有沒有其他方法可以對這種方法進行單元測試。
[更新]
我試圖用一個表達式類似下面
Expression<Func<object, bool>> expr = obj => (bool) UserDefinedFunctionProvider.Invoke("IS_DEFINED", obj);
var data = docDbClient.GetDataAsQueryable("some parameters").Where(expr.Compile()(someobject));
它拋出一個錯誤「可空對象必須有一個值」
,這是什麼錯誤的原因和如何解決它?