4

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

fileCreationInformation.Url = value; 

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

Пример кода:

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

SomeFunction:

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

Не могли бы вы показать код, который дублирует эту проблему? – paqogomez

+0

@paqogomez Обновлен с кодом. – Aditi

+0

Откуда берется ценность? Вы гарантировали, что это не пусто или пусто? Кроме того, я не работал с этим, но вам нужно вызвать .Update() в файле fileCreationInformation? – trgraglia

ответ

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 
} 
+0

Но это требует изменения кода проверяемого метода .. так что я не могу этого сделать ... – Aditi

+0

Что именно вы пытаетесь проверить здесь? –

+0

Отправьте полный код. –

Смежные вопросы