Billpeng Space

技术源自生活
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

关于什么时候使用NMock

Posted on 2012-10-06 19:36  billpeng  阅读(421)  评论(0编辑  收藏  举报

1.对于自己编写的接口还未完成时,不需要使用NMock。可以直接生成一个空的实现类,这样也便于在写了测试后跟进测试实现类的正确性。

2.对于其他项目组给予的接口还未实现时,则可以使用NMock模拟,以便自己的代码中调用。等接口实现后,将原来模拟处的new修改为真实的类名。

例子:(其他项目组给了一个IUserDal接口,用于读与数据库)

    public interface IUserDal
    {
        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;
        }
目前的这个例子比较简单,NMock作用体现得还不彻底,当需要模拟的接口比较复杂时,自己模拟值(不用NMock)就显得很麻烦,也不OO,NMock可以有效的帮助我们分离注意力,让我们把精力更有效的集中在自己的业务逻辑上。