1

我正在尝试为NewDrive实现NavigationCmdletProvider抽象类的类的方法创建单元测试:

[TestMethod()]
[DeploymentItem("PsFoo.dll")]
public void NewDriveTest()
{
    // arrange
    FooProvider_Accessor target = new FooProvider_Accessor();
    ProviderInfo providerInfo = ?;

    PSDriveInfo drive = new PSDriveInfo("FOO", providerInfo, "FOO:\\", null, null);
    PSDriveInfo actual;

    // act
    actual = target.NewDrive(drive);

    // assert
    Assert.IsInstanceOfType(actual,typeof(FooDriveInfo));
}

不幸的是,我似乎找不到创建ProviderInfo实例的方法,因为它是 FooProvider 的受保护属性。

我错过了什么?

4

1 回答 1

1

您可以使用反射(未经测试)解决它:

// fetch the property "ProviderInfo" from the type "FooProvider".
PropertyInfo property =
    typeof(FooProvider).GetProperty("ProviderInfo", BindingFlags.Instance | BindingFlags.NonPublic);

// fetch the property's value (of the object "target").
FooProvider providerInfo = (FooProvider)property.GetValue(target);

您可能必须调整类型信息或属性名称,因为我不知道它们在您的代码库中实际上是如何命名的。

于 2022-01-29T12:02:40.000 回答