使用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.调用静态转换函数在单元测试中不起作用

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 });