在做单元测试的时候,我们会发现我们要测试的方法会引用很多外部依赖的对象,比如:(发送邮件,网络通讯,记录Log, 文件系统 之类的)。 而我们没法控制这些外部依赖的对象。  为了解决这个问题,我们需要用到Stub和Mock来模拟这些外部依赖的对象,从而控制它们
  阅读目录
  实例
  设计测试用例
  什么是外部依赖
  Stub和Mock的相同处
  Stub和Mock的区别
  良好的产品代码才能单元测试
  Mock框架
  源代码下载
  实例
  Analyze类会检查filename的长度,如果小于8,我们会使用一个实现IWebService的类来记录错误.
  我们需要给Analyze方法写单元测试。

 

public class LogAnalyzer
{
private IWebService service;
private IEmailService email;
public IWebService Service
{
get { return service; }
set { service = value; }
}
public IEmailService Email
{
get { return email; }
set { email = value; }
}
public void Analyze(string fileName)
{
if (fileName.Length < 8)
{
try
{
service.LogError("the file name is to short" + fileName);
}
catch (Exception e)
{
email.SendEmail("From@test.com", "To@test.com", "IWebServiceFailed", e.Message);
}
}
}
}