我正在编写一个测试,我必须将一个模拟传递给一个特定的方法。我想知道,通过构造函数或直接将其传递给相关方法有什么好处。或者这并不重要。
例如
通过构造函数传递接口/模拟
class User()
{
IClock clock;
User(IClock clock) {this.clock = clock;}
User GetUser(){ ..}
UpdateUser(User user) {
...
this.clock.Now();
...
}
}
对比
将接口/模拟传递给方法
class User()
{
User GetUser(){ ..}
UpdateUser(IClock clock, User user) {
...
clock.Now();
...
}
}
谢谢!
编辑
在这种情况下,IClock 将包装 DateTime。我这样做是为了可测试性。如此有效,我将有一个覆盖,它将在其内部构造 IClock。
例如。对于方法案例:
UpdateUser(User user) {
UpdateUser(new Clock(), user);
}
Clock 将封装 DateTime。