我希望有人可以识别出导致下面程序行为发生变化的语言特性(或bug).如果提供给Orchard :: Go的委托不是静态的,则会从更大的场景中重现它,该场景旨在记录消息.
using System;
namespace Sample
{
public static class Program
{
public static void Main()
{
new Apple();
}
}
public sealed class Apple
{
public Apple()
{
Orchard.Go(() => { });
}
}
internal static class Orchard
{
public static void Go(Action action)
{
Console.WriteLine(action.Method.IsStatic);
}
}
}
Run Code Online (Sandbox Code Playgroud)
场景是:
我一直在使用Moq一段时间,为了简洁起见,我经常使用流畅的语法表达设置Mock.Of...
var foo = Mock.Of<IFoo>(f => f.Method(It.IsAny<string>()) == 7 && f.Property == "Hi");
var sut = new Whatever(foo);
Run Code Online (Sandbox Code Playgroud)
最近,我开始使用AutoFixture,似乎无法找到同时表达多个设置的任何等效语法.我明白我可以用Freeze... 表达同样的事情
var foo = fixture.Freeze<Mock<IFoo>>();
foo.Setup(f => f.Method(It.IsAny<string>()).Returns(7);
foo.Setup(f => f.Property).Returns("Hi");
var sut = fixture.Create<Whatever>();
Run Code Online (Sandbox Code Playgroud)
......但如果可能的话,我希望获得自动锁定的好处,并保持流畅的Moq设置的简洁性.除了文体论点,AutoFixture是否公开了任何方式让我能够流利地表达这些设置?如果没有,我可以使用任何优化来使AutoFixture设置更简洁吗?