小编Sch*_*uNZ的帖子

2013和2015调试编译之间的匿名方法静态不同

我希望有人可以识别出导致下面程序行为发生变化的语言特性(或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)

场景是:

  • 如果我编译并运行使用Visual Studio 2013生成的调试版本,则输出为True.
  • 如果我编译并运行使用Visual Studio 2015生成的调试版本,则输出为False.
  • 在这两种情况下,目标.NET Framework都是4.5.
  • 如果我编译并运行使用Visual Studio 2015生成的发布版本,则输出为True(因此与Visual Studio 2013一致).
  • Visual Studio 2015是RC版本(如果重要的话). …

c#

7
推荐指数
1
解决办法
239
查看次数

AutoFixture和流利的Moq语法

我一直在使用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设置更简洁吗?

.net c# unit-testing moq autofixture

4
推荐指数
2
解决办法
1376
查看次数

标签 统计

c# ×2

.net ×1

autofixture ×1

moq ×1

unit-testing ×1