【发布时间】:2011-09-10 06:23:31
【问题描述】:
我正在尝试将引擎及其单元测试移植到 C# WP7 silverlight 中。因为它使用 http 请求,所以它需要按照框架的要求是异步的。我正在移植的 Android 版本的引擎在工作线程上使用同步阻塞套接字。只要整个操作完成(不仅仅是 http 请求),它就会调用回调。
问题 - 我如何包装回调机制,以便它执行可用于 [异步] 单元测试的异步回调?
我希望它做这样的事情:
using System;
using System.Net;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Silverlight.Testing;
[TestClass]
public class WebRequestsTests : WorkItemTest
{
[TestMethod, Asynchronous]
public void TestWebRequest()
{
var webRequest = WebRequest.CreateHttp("http://www.stackoverflow.com");
webRequest.BeginGetResponse(result =>
{
EnqueueCallback(() =>
{
WebResponse response = webRequest.EndGetResponse(result);
// process response
TestComplete(); // async test complete
});
}, null);
}
}
我是否需要实现 IAsync 接口或类似的东西?
我想让它做这样的事情:
using System;
using System.Net;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Silverlight.Testing;
[TestClass]
public class WebRequestsTests : WorkItemTest
{
[TestMethod, Asynchronous]
public void TestWebRequest()
{
MyThread thread = new MyThread();
thread.Start(result =>
{
EnqueueCallback(() =>
{
WebResponse response = thread.EndGetResult(result);
// process response
TestComplete(); // async test complete
});
}, null);
}
}
不确定我是否也 100% 适应 lambda 表达式,所以如果将它们删除,那就更好了! ;)
谢谢
【问题讨论】:
标签: c# silverlight unit-testing windows-phone-7