Frozen mock的财产被覆盖了

时间:2013-02-20 21:31:23

标签: c# unit-testing moq autofixture

我遇到的问题是AutoFixture似乎覆盖了冻结模拟的属性。模拟类的属性是只读的,从我读过的内容来看,AutoFixture不应该尝试用它做任何事情。

我已经在下面的LINQPad中包含了重现问题的代码。 Victim是一个简单的测试类,具有两个只读属性。问题是,一旦我设置了Things属性的期望并注册了模拟的Object作为AutoFixture的实例返回Victim类型,集合Things包含不同的字符串。

要重现此问题,请在LINQPad中将以下代码作为 C#程序运行,并从NuGet引用 AutoFixture Moq 。请务必包含命名空间 Moq Ploeh.AutoFixture

我的期望是我应该找回我在Register注册的对象,并且返回的Things中的集合Victim应该返回我在调用{{{{ 1}}。

SetupGet

1 个答案:

答案 0 :(得分:4)

我的猜测是Things Iterator 实际上是相同的,但它生成的字符串是不同的。这是actually by design,虽然我们后来意识到这不是一个特别好的设计决定。

AutoFixture 3, this behavior has been changed

如果我猜错了,这个问题将在AutoFixture 3中消失。在AutoFixture 2中你应该能够通过创建这样的夹具来解决它:

var fixture = new Fixture().Customize(new StableMultipeCustomization());