2010-04-12 6 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에 설치, 내 EncomueCallback을 구현하는 방법은 내 functio LoginCallBack ???내 전화 콜백으로 EnqueueCallBack을 설정하는 방법

답변

0

이 작업을 수행하려면 다른 방법을 사용해야합니다. 왜 LoginCallBack을 대기열에 넣고 싶습니까? sendData가 끝나면 비동기 적으로 호출됩니다.

또한 LoginCallBack에는 TestComplete()가 있고 로그인에는 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이 어떻게 호출되는지는 확실하지 않지만 테스트를 통과해야합니다.

+0

감사합니다. – JoeLoco

관련 문제