Belenot Asked:2020-05-15 21:05:07 +0000 UTC2020-05-15 21:05:07 +0000 UTC 2020-05-15 21:05:07 +0000 UTC 为什么要使用模拟对象? 772 据说这项技术可以让你模拟一个物体。如果可以简单地创建这个对象,那有什么必要呢? c# 1 个回答 Voted Best Answer Liashenko V 2020-09-20T22:15:43Z2020-09-20T22:15:43Z 模拟对象允许您: 将被测类的逻辑与其所依赖的接口的逻辑分开。想象一下,根据B类的行为,A类的行为会发生变化。由于在测试中你可以实现mock对象的任何行为——mock<IB>,你可以用任何你认为合适的方式来测试你的类。 class A { IB _b; public A (IB b){ _b = b; } public string foo(str){ return _b.bar(str); } } 允许您简化被测对象的创建。因此,在测试中,您不必创建 B 类的所有依赖项以及它所依赖的所有依赖项。 class A { public A (IB b) } class B { public B (IC b, ID d, IE e ... ) } 它允许您摆脱可能的长时间运行的操作(例如,使用输入输出)。 class A { public A (IB b) } interface IB { string SomeLongIO(string str); }
模拟对象允许您:
将被测类的逻辑与其所依赖的接口的逻辑分开。想象一下,根据B类的行为,A类的行为会发生变化。由于在测试中你可以实现mock对象的任何行为——mock<IB>,你可以用任何你认为合适的方式来测试你的类。
允许您简化被测对象的创建。因此,在测试中,您不必创建 B 类的所有依赖项以及它所依赖的所有依赖项。
它允许您摆脱可能的长时间运行的操作(例如,使用输入输出)。