Установить свойства для объекта ShimFileCreationInformation

Я пишу несколько тестовых случаев, используя фальшивый фреймворк. Я использую объект ShimFileCreationInformation от Microsoft.SharePoint.Client.Fakes Пространство имен. Теперь я передаю этот объект в функцию. Внутри функции я пытаюсь присвоить значение свойству Url.

fileCreationInformation.Url = value;

Но даже если значение присутствует, для URL ничего не назначается должным образом, и оно остается нулевым. Есть ли решение этой проблемы? Что еще хуже, нет документации на ShimFileCreationInformation объект.

Пример кода:

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

SomeFunction:

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

1 ответ

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
}
Другие вопросы по тегам