Как установить EnqueueCallBack для моего общего обратного вызова - PullRequest
1 голос
/ 12 апреля 2010
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsistec.Domain;
using Microsistec.Client;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Collections.Generic;
using Microsistec.Tools;
using System.Json;
using Microsistec.SystemConfig;
using System.Threading;
using Microsoft.Silverlight.Testing;

namespace Test
{

    [TestClass]
    public class SampleTest : SilverlightTest
    {

        [TestMethod, Asynchronous]
        public void login()
        {

            List<PostData> data = new List<PostData>();
            data.Add(new PostData("email", "xxx"));
            data.Add(new PostData("password", MD5.GetHashString("xxx")));
            WebClient.sendData(Config.DataServerURL + "/user/login", data, LoginCallBack);
            EnqueueCallback(?????????);
            EnqueueTestComplete();
        }

        [Asynchronous]
        public void LoginCallBack(object sender, System.Net.UploadStringCompletedEventArgs e)
        {
            string json = Microsistec.Client.WebClient.ProcessResult(e);
            var result = JsonArray.Parse(json);
            Assert.Equals("1", result["value"].ToString());
            TestComplete();
        }
    }

Я пытаюсь установить ???????? значение, но мой обратный вызов является общим, он настроен на моем WebClient .SendData, как я могу реализовать свой EnqueueCallback для моего уже функционирующего LoginCallBack ???

1 Ответ

0 голосов
/ 12 апреля 2010

Вы должны использовать другой подход, чтобы сделать эту работу. Почему вы хотите поставить в очередь LoginCallBack? Он будет вызываться асинхронно после завершения sendData, не так ли?

Кроме того, я не вижу смысла иметь TestComplete () в LoginCallBack и EnqueueTestComplete () при входе в систему. Разве это не сработает:

[TestClass]
    public class SampleTest : SilverlightTest
    {

        [TestMethod, Asynchronous]
        public void login()
        {

            List<PostData> data = new List<PostData>();
            data.Add(new PostData("email", "xxx"));
            data.Add(new PostData("password", MD5.GetHashString("xxx")));
            WebClient.sendData(Config.DataServerURL + "/user/login", data, LoginCallBack);
        }

        [Asynchronous]
        public void LoginCallBack(object sender, System.Net.UploadStringCompletedEventArgs e)
        {
            string json = Microsistec.Client.WebClient.ProcessResult(e);
            var result = JsonArray.Parse(json);
            Assert.Equals("1", result["value"].ToString());
            TestComplete();
        }
    }

Я не уверен, как вызывается LoginCallback, но если вы уверены, что это произойдет, он должен пройти тест!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...