2015-07-03 2 views
4

Так что я пытаюсь Microsoft Подделки и мне это нравится, но у меня есть статический метод с из параметров, и я не могу понять, как использовать его:Настройка выходных параметров с Microsoft Подделки

Статический метод подделать :

public static class Foo 
{ 
    public static bool TryBar(string str, out string stuff) 
    { 
     stuff = str; 

     return true; 
    } 
} 

Тест:

[TestFixture] 
public class MyTestTests 
{ 
    [Test] 
    public void MyTest() 
    { 
     using (ShimsContext.Create()) 
     { 
      string output; 
      ShimFoo.TryBarStringStringOut = (input, out output) => 
      { 
       output = "Yada yada yada"; 

       return false; 
      }; 
     } 
    } 
} 

Теперь я получаю ошибку в моем тестовом утверждая тх t мой выходной параметр неверен ("Не удается разрешить вывод символа '"). Я пытался получить документацию о том, как обрабатывать параметры, но я ничего не могу найти. У кого-нибудь был опыт?

ответ

5

Как только вы попросите вас разобраться. Для тех, кто еще с этой проблемой я решил так:

[TestFixture] 
public class MyTestTests 
{ 
    [Test] 
    public void MyTest() 
    { 
     using (ShimsContext.Create()) 
     { 
      ShimFoo.TryBarStringStringOut = (string input, out string output) => 
      { 
       output = "Yada yada yada"; 

       return false; 
      }; 
     } 
    } 
} 
3

Просто чтобы прояснить на это, ответ в том, что вам нужно объявлять типы для всех параметров лямбда-выражения, когда ваш подкладками метод содержит выходные параметры.

Например, это не будет работать ..

ShimFoo.TryBarStringStringOut = (input, out output) => { ... };

и это не будет работать ...

ShimFoo.TryBarStringStringOut = (input, out string output) => { ... };

, но (как и в ответ по Maffelu) это будет работа ...

ShimFoo.TryBarStringStringOut = (string input, out string output) => { ... };

+0

Благодарим за дополнительное разъяснение. – Maffelu

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