在FakeItEasy中使用的假人是什么?

sch*_*opy 13 c# mocking fakeiteasy

什么是Dummy用于FakeItEasy?它与A.Fake或A.​​Ignored有何不同?

谢谢 :-)

Pat*_*gne 13

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

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

public class Foo
{
    public void Bar(DateTime someDate);
}
Run Code Online (Sandbox Code Playgroud)

现在,在您的一个测试中,您想要调用bar方法,但传递给它的值对于测试并不重要,而不是写:

foo.Bar(new DateTime(2000, 1, 1));
Run Code Online (Sandbox Code Playgroud)

你可以写:

foo.Bar(A.Dummy<DateTime>());
Run Code Online (Sandbox Code Playgroud)

这表明该值对于测试来说确实不重要,因此使用它的全部原因是更好地传达意图.

  • 这听起来似乎对我无视.用法有什么不同? (2认同)

Bla*_*rad 5

@PatrikHägne的答案描述了用户如何使用虚拟模型,但故事还有另外一部分。FakeItEasy确实使用了傻瓜。

当FakeItEasy必须通过调用该类的构造函数之一来创建Fake类实例(有时甚至是另一个Dummy类实例)时,构造函数接受参数时,它将使用Dummies作为参数。

我鼓励您查看“ 傻瓜”文档