为ShimFileCreationInformation对象设置属性

4

我正在使用fakes框架编写一些单元测试用例。 我使用了来自Microsoft.SharePoint.Client.Fakes命名空间的对象ShimFileCreationInformation。 现在,我将此对象传递给一个函数。 在函数内部,我尝试为Url属性分配一个值。

fileCreationInformation.Url = value;

尽管值存在,但是没有正确地将任何内容分配给Url并且它仍保持为null。是否有任何解决此问题的方法?更糟糕的是,ShimFileCreationInformation对象上没有文档可用。

代码示例:

ShimFileCreationInformation fileCreationInformation = new ShimFileCreationInformation();
SomeFunction(fileCreationInformation);

SomeFunction :

public void SomeFunction(FileCreationInformation fileCreationInformation)
{
     fileCreationInformation.Url = value; // This statement had so effect on fileCreationInformation.Url
}

你能展示一下复制问题的代码吗? - crthompson
@paqogomez 已更新代码。 - Aditi
价值从哪里来?您是否确保它不为空或空字符串?此外,我没有使用过这个,但是您需要在fileCreationInformation对象上调用.Update()吗? - Anthony Graglia
@Aditi,你有尝试下面我在答案中提供的代码吗? - Adarsh Shah
1个回答

0

fileCreationInformation.Url = value;

直接设置上述值是不起作用的,因为您正在设置Shim的值而不是实际对象的值。您需要使用ShimFileCreationInformation.AllInstances.UrlGet,以便每当调用Url Get时,它都会返回您指定的值。

您的代码应该类似于以下内容:

[TestMethod]
public void derived_test()
{
    using (ShimsContext.Create())
    {
        ShimFileCreationInformation fileCreationInformation = new ShimFileCreationInformation();

        ShimFileCreationInformation.AllInstances.UrlGet = (instance) => value;

        SomeFunction(fileCreationInformation);
    }
}

public void SomeFunction(FileCreationInformation fileCreationInformation)
{
    var url = fileCreationInformation.Url; 

    // Check url variable above. It should be set to value

    fileCreationInformation.Url = value; // This statement will not work since you are trying to set the value of the Shim and you need to use `ShimFileCreationInformation.AllInstances.UrlGet` to set property value for Shims
}

但这需要更改正在测试的方法的代码...所以我不能这样做... - Aditi
你在这里究竟想要测试什么? - Adarsh Shah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接