2013-03-13 47 views
0

方法:使用PrivateObject.Invoke調用靜態轉換功能是不是在單元測試工作

private static HipKvp[] GetRequestParameterArray(CaptchaRequestModel request){} 

單元測試:

HipKvp[] input = (HipKvp[])privObj.Invoke("GetRequestParameterArray", new CaptchaRequestModel[] { result }); 

例外:

MissingMethodException was unhandled by user code: 
Attempted to access a missing member. 

我試過不同的方式,但不工作。

+0

認識[工作](http://stackoverflow.com/questions/8609595/using-privateobject-invoke-to -call-A-靜態轉換功能,拒收編譯-I)。檢查拼寫和對象類型。 – 2013-03-13 04:06:27

+0

http://stackoverflow.com/questions/5396996/how-can-i-use-privateobject-to-access-private-members-of-both-my-class-and-its-p 檢查此鏈接 - 並嘗試傳遞綁定標誌; – 2013-08-04 20:48:36

回答

0

PrivateObject.Invoke(String, Object[])不碰靜態成員,可能是因爲成員不一定屬於而是屬於對象,而是屬於類。

您需要在第二個參數使用PrivateObject.Invoke(String, BindingFlags, Object[])並指定BindingFlags.NonPublic | BindingFlags.Static像這樣:

HipKvp[] input = (HipKvp[])privObj.Invoke("GetRequestParameterArray", BindingFlags.NonPublic | BindingFlags.Static, new CaptchaRequestModel[] { result }); 
相關問題