使用PrivateObject.调用静态转换函数在单元测试中不起作用
本文关键字:单元测试 不起作用 函数 转换 PrivateObject 调用 静态 使用 | 更新日期: 2023-09-27 18:03:32
方法:
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.
我试过不同的方法,但都不起作用。
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 });