您的位置:首页 > 其它

测试:mock对象

2012-09-22 17:16 197 查看
using System;
using System.Text;
using System.Threading;
using System.Messaging;

namespace QueueSpace
{

//外部依赖的接口,它屏蔽了mock对象和真对象
class Queue
{
public virtual object readMessage()
{
return null;
}
}

//mock对象,模拟真对象的行为
class TestQueue : Queue
{
private int index = 0;
private object[] Data = { "hello","world"};
public override object readMessage()
{

while (index < Data.Length)
{
object data = Data[index];
index++;
return data;
}

Thread.Sleep(60*60*60);
return null;
}
}

//真正的业务对象
class WorkQueue : Queue
{
MessageQueue queue = null;

public WorkQueue()
{
string queueName = ".\\Private$\\MSMQDemo";
if (MessageQueue.Exists(queueName))
{
queue = new MessageQueue(queueName);
}
else
{
queue = MessageQueue.Create(queueName, false);
queue.SetPermissions("Everyone", MessageQueueAccessRights.FullControl);
}
}

public override object readMessage()
{
System.Messaging.Message message = queue.Receive();
string s =(string)message.Body;
return (object)s;
}
}

//对象工厂
class QueueFactory
{
public static Queue makeQueue()
{
return new TestQueue();
}
}
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QueueSpace;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Queue queue = QueueFactory.makeQueue();
while (true)
{
object msg = queue.readMessage();
Console.WriteLine((string)msg);
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: