1.对于自己编写的接口还未完成时,不需要使用NMock。可以直接生成一个空的实现类,这样也便于在写了测试后跟进测试实现类的正确性。
2.对于其他项目组给予的接口还未实现时,则可以使用NMock模拟,以便自己的代码中调用。等接口实现后,将原来模拟处的new修改为真实的类名。
例子:(其他项目组给了一个IUserDal接口,用于读与数据库)
public interface IUserDal
{
string getUsername(string email);
}
{
string getUsername(string email);
}
由于IUserDal接口的实现还未完工,所以这里可以先用NMock模拟一下
public int getUsernameLength(string email)
{
#region 模拟接口预期
MockFactory _factory = new MockFactory();
var mock = _factory.CreateMock<IUserDal>();
mock.Expects.One.MethodWith(a => a.getUsername("pwq@163.com")).WillReturn("xinux");
#endregion
IUserDal u = mock.MockObject; //正式版应该换成:IUserDal u = new 实现IUserDal的类();
string username = u.getUsername(email);//获取到模拟的Username
//根据username可以做自己的业务逻辑
int length = username.Length;
//返回自己逻辑的结果
return length;
}
{
#region 模拟接口预期
MockFactory _factory = new MockFactory();
var mock = _factory.CreateMock<IUserDal>();
mock.Expects.One.MethodWith(a => a.getUsername("pwq@163.com")).WillReturn("xinux");
#endregion
IUserDal u = mock.MockObject; //正式版应该换成:IUserDal u = new 实现IUserDal的类();
string username = u.getUsername(email);//获取到模拟的Username
//根据username可以做自己的业务逻辑
int length = username.Length;
//返回自己逻辑的结果
return length;
}