所以我正在尝试Microsoft Fakes并且我喜欢它,但我有一个带有out参数的静态方法,我无法弄清楚如何使用它:
虚假的静态方法:
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;
};
}
}
}
现在我的测试中出现错误,声称我的输出参数错误(“无法解析符号'输出'”)。我一直试图获得一些如何处理参数的文档,但我找不到任何东西。有人有经验吗?
答案 0 :(得分:6)
一旦你要求你解决问题。对于其他有这个问题的人我解决了这个问题:
[TestFixture]
public class MyTestTests
{
[Test]
public void MyTest()
{
using (ShimsContext.Create())
{
ShimFoo.TryBarStringStringOut = (string input, out string output) =>
{
output = "Yada yada yada";
return false;
};
}
}
}
答案 1 :(得分:5)
为了澄清这一点,答案是当你的shimmed方法包含out参数时,你需要声明lambda表达式的所有参数的类型。
例如,这不起作用..
ShimFoo.TryBarStringStringOut = (input, out output) => { ... };
这不起作用......
ShimFoo.TryBarStringStringOut = (input, out string output) => { ... };
但是(如Maffelu的回答)这个将工作......
ShimFoo.TryBarStringStringOut = (string input, out string output) => { ... };