如何伪造对MSMQ.Send的调用

时间:2013-07-16 16:04:39

标签: visual-studio unit-testing mstest msmq microsoft-fakes

我有以下测试代码:

 using (ShimsContext.Create())
            {                           

                // act
                sut.MethodCall();
            }

SUT具有以下方法(对于MethodCall):

  Dim mq As New MSMQ.MessageQueue(messageQPath)
  mq.Send(mqMsg)

但是我收到了以下错误:

  "The queue does not exist or you do not have sufficient permissions to perform the operation."

显然队列将不存在,如果我没有在假邮件队列上创建队列,我将没有足够的权限。有没有人有使用MSMQ和Fakes的经验,所以调用MSMQ发送基本上是一个无法操作,我可以验证?

1 个答案:

答案 0 :(得分:1)

垫片需要像这样设置:

 ShimMessageQueue.AllInstances.SendObject = (m, o) =>
                {
                    // verification code here
                };

由于Fakes没有使用框架直接验证调用的概念,因此您只需将验证代码放在lambda中以进行SendObject调用。