测试DataAccess类构建在WCF服务上

时间:2010-07-08 10:56:11

标签: unit-testing nhibernate wcf

我把我的NHibernate数据访问类放在WCF服务中,可以通过Silverlight项目使用它,但我有错误,想测试我的查询。

可以使用NUnit在服务类中测试此查询吗?之前我通常测试这个类,但是它在服务类中是怎么做的?

这是我的WCF服务类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using DataTransfer;
using NHibernate;
using NHibernate.Cfg;
using System.Diagnostics;

namespace WcfService1
{
    public class Service1 : IService1
    {
        private ISession _session;
        public Service1()
        {
            try
            {
                _session = (new Configuration()).Configure().BuildSessionFactory().OpenSession();
            }
            catch (Exception e)
            {
                Debug.Write(e);
                throw;
            }
        }
        public IList<Dziecko> GetChildByFirstname(string _firstname)
        {
            return _session.CreateCriteria(typeof(Dziecko))
                .Add(NHibernate.Criterion.Expression.Eq("Imie", _firstname)).List<Dziecko>();
        }
        public IList<Dziecko> GetChildByLastname(string _lastname)
        {
            return _session.CreateCriteria(typeof(Dziecko))
                .Add(NHibernate.Criterion.Expression.Eq("Nazwisko", _lastname)).List<Dziecko>();
        }
        public IList<Dziecko> GetChildByFirstnameAndLastname(string _firstname, string _lastname)
        {
            return _session.CreateCriteria(typeof(Dziecko))
                .Add(NHibernate.Criterion.Expression.Eq("Imie", _firstname)).Add(NHibernate.Criterion.Expression.Eq("Nazwisko", _lastname)).List<Dziecko>();
        }
    }
}

1 个答案:

答案 0 :(得分:2)

如果您想自己测试查询,我建议将它们放入一个单独的程序集中(可能使用repository pattern)并从您的服务中调用此程序集中的方法。这样可以更轻松地测试查询本身,还可以在测试服务时模拟存储库。