C# 假动作中假人的作用是什么?

C# 假动作中假人的作用是什么?,c#,mocking,fakeiteasy,C#,Mocking,Fakeiteasy,假人在假货中的用途是什么?它与伪造或忽略有什么区别 谢谢:-)Fakeitesy本身并没有真正使用虚拟实例,它只是一种创建虚拟实例的方法,可以在测试中使用 例如,假设要测试以下类: public class Foo { public void Bar(DateTime someDate); } 现在,在您的一个测试中,您希望调用bar方法,但传递给它的值对测试并不重要,而不是写入: foo.Bar(new DateTime(2000, 1, 1)); 你可以写: foo.Bar(A.

假人在假货中的用途是什么?它与伪造或忽略有什么区别


谢谢:-)

Fakeitesy本身并没有真正使用虚拟实例,它只是一种创建虚拟实例的方法,可以在测试中使用

例如,假设要测试以下类:

public class Foo
{
    public void Bar(DateTime someDate);
}
现在,在您的一个测试中,您希望调用bar方法,但传递给它的值对测试并不重要,而不是写入:

foo.Bar(new DateTime(2000, 1, 1));
你可以写:

foo.Bar(A.Dummy<DateTime>());
foo.Bar(A.Dummy());

这表明该值对测试并不重要,因此使用该值的全部原因是为了更好地传达意图。

@Patrik Hägne的回答描述了用户如何使用假人,但故事还有另一部分。假冒伪劣的确利用了假人

当FakeiTesy必须通过调用类的一个构造函数来创建一个伪类实例(有时是另一个伪类实例),并且构造函数接受参数时,它将使用伪参数作为参数


我鼓励您查看。

我仍然觉得这似乎被忽略了。用法有什么不同?我自己就试过了;在A.CallTo().musthaveOccessed()中使用.Dummy不会像A.Ignore那样接受任何值。除此之外,我不知道。我真的看不清什么是不清楚的。你知道上面的类Foo是被测试的类,不是假的吧?A.Dummy创建一个虚拟值,仅此而已。配置调用时不能使用它。因此
Dummy
A的低级版本。忽略
?那么使用后者就更有意义了。一点也不
A.Ignored
由用户提供,用于断言已进行调用。它将匹配提供给调用的任何参数(适用于只关心其他一些参数的情况)。只能在断言中使用.Ignore。我永远不会在断言中使用伪值,因为它会导致FakeiTesy对值执行相等性检查,并且如果它正在检查的参数在将来发生更改,测试将失败。