数据库/ EDM模型的独立服务 - 由nunit测试Web服务

时间:2011-05-16 17:34:34

标签: c# web-services nunit

嘿 我有服务和EDM模型 - Model1Container:

public class Service1 : System.Web.Services.WebService
    {

        Model1Container modelDataBase = new Model1Container();

        [WebMethod]
        public List<Person> getData()
        {
            using (modelDataBase = new Model1Container())
            {
                var a = from aa in modelDataBase.Person
                        select aa;

                return a.ToList();
            }
        }
}

我想用nunit测试这个web服务。但我发现问题 - 在服务中我使用生产数据库中的模型,但在测试中我想用开发数据库测试服务。

如何从数据库中独立服务?

public class TestClass
    {
        Model1Container model = new Model1Container();

        [TestFixtureSetUp]
        public void SetUp()
        {
            using (Model1Container model = new Model1Container())
            {
                Person p = new Person()
                {
                    name = "Michal",
                    surname = "Nowak",
                    age = 12,
                    dateOfBirth = new DateTime(1987, 12, 3)

                };
                model.AddToPerson(p);
                model.SaveChanges();
            }
        }

        [Test]
        public void TestGetData()
        {
            WebService1.Service1 service = new WebService1.Service1();
            var actual = service.getData();
            Assert.AreEqual(1, actual.Count);
        }
    }

1 个答案:

答案 0 :(得分:1)

在您的服务中添加属性设置器,并在执行测试之前注入您自己的模型容器。

您还需要重构您的服务,以便它不会在服务方法中初始化容器。 (或者只有在它为空时才会出现)