2015-12-13 8 views
0

Мне нравится использовать фреймворк Microsoft Fakes для перехвата кода, который я не контролирую, например .net Framework, такие как объекты, которые живут в системе. Это также устраняет необходимость написания кода оболочки для этих типов объектов. Однако время от времени работает с этим фреймворком, который оставляет меня весьма расстроенным. Я использую следующее пространство имен System.Text.RegularExpressions и пытается настроить прокси для объекта Regex. Однако он недоступен, и непонятно, почему. В прошлом я также использовал Moles и столкнулся с аналогичными сценариями, когда что-то не размолото, но не понятно почему. Мне часто приходится писать много кода, чтобы обойти эту проблему, однако я хотел бы избежать этого, если это возможно.Использование подделок для следующего пространства имен System.Text.RegularExpressions

Если у кого-то есть решение этой проблемы, предоставьте решение. Я бы хотел избежать изменения фальсификации и тестирования.

ответ

2

Я получил это для работы.

[TestMethod] 
    public void TestRegex() 
    { 
     using (ShimsContext.Create()) 
     { 
      System.Text.RegularExpressions.Fakes.ShimRegex.IsMatchStringString = (s, s1) => true; 
      bool result = Regex.IsMatch("TestString", "NoMatch"); 
      Console.WriteLine("regex result: " + result); 
      Assert.IsFalse(result); 
     } 
    } 

Необходимо также изменить файл «System.fakes». Я считаю, что большинство фрустраций с фреймворком Fakes можно решить, отредактировав эти файлы конфигурации. Не уверен, почему в этом случае необходимо явно добавить.

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/"> 
<Assembly Name="System" Version="4.0.0.0"/> 
<ShimGeneration> 
    <Add FullName="System.Text.RegularExpressions.Regex"/> 
</ShimGeneration> 
</Fakes> 
+0

Это вызвало мою неотложную необходимость. Это похоже на то, что он не является рекурсивным для вложенных типов. У меня все еще есть некоторые типы, которые не отображаются, но это касается более половины моих проблемных предметов. спасибо. – thxmike

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

  • Нет связанных вопросов^_^