Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > После тест. метода запускается Page_Load,почему?


Автор: Gigant007 19.3.2011, 15:21
Есть тестовый метод, 
Код

[TestMethod()]
        [HostType("ASP.NET")]
        [AspNetDevelopmentServerHost("C:\\Documents and Settings\\islam\\мои документы\\visual studio 2010\\Projects\\CustomersSolution\\Customers", "/")]
        [UrlToTest("http://localhost:50393/Login.aspx")]
        [DeploymentItem("Customers.dll")]
        public void AuthenticateUserTest()
        {
            TrueLogin_Accessor target = new TrueLogin_Accessor();
            List<Customers.Models.Customer> now = (new CustomersDBEntities()).Customers.ToList();
            TextBox LoginTB = new TextBox();
            LoginTB.Text = now[0].Login;
            target.Login = LoginTB;
            TextBox PasswordTB = new TextBox();
            PasswordTB.Text = now[0].Password;
            target.Password = PasswordTB;          
            bool expected = true;
            bool actual = false;
            actual = target.AuthenticateUser();
            Assert.AreEqual(expected, actual);
        }

который по идее должен проверять правильность работы метода AuthenticateUser
Код

private bool AuthenticateUser()
        {
            SimpleMembershipProvider S = new SimpleMembershipProvider();
            if (S.ValidateUser(Login.Text.ToString(), Password.Text.ToString()))
            {
                Customer currentCustomer = S.AllCustomers.Find(m => m.Login == Login.Text.ToString());
                List<Order> currentOrders = (new CustomersDBEntities()).Order.Where(m => m.IDCustomer == currentCustomer.IDCustomer).ToList();
                CurrentMember currentMember = new CurrentMember(currentCustomer, currentOrders);
                Session["currentMember"] = currentMember;                                
                FormsAuthentication.RedirectFromLoginPage(currentCustomer.Name, false);
                return true;
            }
            else  { return false; };
        }

Тестовый метод срабатывает правильно, и устанавливает значение теста пройден, но после срабатывания тестового метода, выполнение переходит к методу Page_Load 
Код

protected void Page_Load(object sender, EventArgs e)
        {FormsAuthentication.SignOut();}

после окончания которого результат теста переходит из пройденного, в не пройденный и выдается следующая ошибка:"Не удалось настроить канал связи с ASP.NET. Затребованная служба не найдена."
1) Как лучше изменить тест в таком случае? Может программно установить, что бы не запускался метод Page_Load?
1.1) Почему Page_Load запускается не в начале, т.е. при инициализации и первом применении объекта target, а после выполнения тестового метода?
1.2) Почему вызов этого метода, после окончания и присвоения результата теста, меняет результат?
2) Когда проверяю контрольные значения и ввожу target.AuthenticateUser(), выдается сообщение:"Это выражение вызывает побочные эффекты и не будет вычислено", почему вызывается этот побочный эффект? 

Автор: EagleOne 25.3.2011, 14:02
особо не вник, но, наверно, потому что в AuthenticateUserTest() происходит вызов  AuthenticateUser(), а в нем:

Цитата

FormsAuthentication.RedirectFromLoginPage(currentCustomer.Name, false);


после редиректа жизненый цикл страницы, на которую редиректились и собсвено Page_Load

наверно, как-то так... 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)