【发布时间】:2015-06-30 22:15:48
【问题描述】:
我使用 Moq 已经有一段时间了,为了简洁起见,我经常使用 Mock.Of... 的流畅语法来表达设置。
var foo = Mock.Of<IFoo>(f => f.Method(It.IsAny<string>()) == 7 && f.Property == "Hi");
var sut = new Whatever(foo);
最近,我开始使用 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>();
...但如果可能的话,我想获得自动模拟的好处,并保持流畅的起订量设置的简洁性。抛开风格上的争论不谈,AutoFixture 是否公开了让我流利地表达这些设置的任何方式?如果没有,我可以使用任何优化来使 AutoFixture 设置更简洁吗?
【问题讨论】:
-
你考虑过使用 NSubstitute 吗?它比 Moq显着清洁 OOTB(也有一个 AutoNSubstitute 胶水库),所以如果你没有显着的不可忽视的沉没成本,你除了括号外什么都不会损失 :)
-
@RubenBartelink,在这种情况下,特别是我正在公司环境中使用基于 10k+ Moq/NUnit 的测试,因此可能不太可能切换框架。但是,对于我的个人项目,我肯定会看一下它(我可以在网上找到的少数比较非常人为,并将 NSubstitute 与非常“罗嗦”的非流利的 Moq 语法进行了比较,所以我必须做一个进行一些研究并自己尝试一下)。
标签: c# .net unit-testing moq autofixture