开发的过程中,我们都会遇到对象间的依赖,比如依赖数据库或文件,这时,我们需要使用模拟对象,来进行测试,我们可以手写模拟对象,当然也可以使用模拟框架。
假如有这样的一个需求,当用户登陆时,我需要对用户名和密码进行验证,然后再将用户名写入日志中。
public class MyLogin { public ILog Log { get; set; } public bool Valid(string userName, string passWord) { var isValid = userName == "admin" && passWord == "123456"; Log.Write(userName); return isValid; } } public interface ILog { void Write(string message); } } |
上面的代码在验证完登陆信息后,需要向日志中写入用户名,由于写入日志可能依赖于文件或数据库,我们可能很难进行测试,所以,这里使用模拟对象进行测试。手写模拟对象,代码如下:
public class MyLoginTest { [Test] public void Vaild_Test() { MyLogin login = new MyLogin(); var log = new TestLog(); login.Log = log; var userNmae = "admin"; var passWord = "123456"; var isLogin = login.Valid(userNmae, passWord); Assert.AreEqual(isLogin, true); Assert.AreEqual(log.Message, userNmae); } } public class TestLog : ILog { public string Message; public void Write(string message) { this.Message = message; } } |