2016-10-25 83 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?有沒有其他方法可以對這種方法進行單元測試。

[更新]

我試圖用一個表達式類似下面

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

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

它拋出一個錯誤「可空對象必須有一個值」

,這是什麼錯誤的原因和如何解決它?

回答

0

在您無法通過UserDefinedFunctionProvider嘲笑的UDF的時刻。