Servicio independiente de la base de datos / modelo EDM: prueba del servicio web de nunit

Hola, tengo servicio y modelo 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();
            }
        }
}

y quiero probar este servicio web con nunit. Pero encuentro un problema: en el servicio utilizo el modelo de la base de datos de producción, pero en la prueba quiero probar el servicio con la base de datos de desarrollo.

¿Cómo puedo independizar el servicio de la base de datos?

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);
        }
    }

preguntado el 16 de mayo de 11 a las 17:05

1 Respuestas

Agregue un establecedor de propiedades a su servicio e inyecte su propio contenedor de modelos antes de ejecutar la prueba.

También necesitaría refactorizar su servicio para que no inicie el contenedor en el método de servicio. (O solo inits si es nulo)

contestado el 16 de mayo de 11 a las 21:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.