2010-04-12 136 views
1
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到我已經functio LoginCallBack ???如何設置EnqueueCallBack我一般回調

回答

0

你必須採取不同的方法來完成這項工作。你爲什麼想入隊LoginCallBack?它會在sendData結束時異步調用,不是嗎?

此外,我在登錄中看到在LoginCallBack和EnqueueTestComplete()中使用TestComplete()沒有意義。這會不會工作:

[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被怎麼叫,但如果你確保這種情況發生,應該使測試通過!

+0

感謝的人,工作! – JoeLoco 2010-04-12 15:20:48