从单元测试调用时,来自WCF方法的流不正确

时间:2017-11-16 07:23:12

标签: c# unit-testing wcf

我有一个wcf服务如下:

public class DocumentReadService : IDocumentReader
{
    public Stream GetDocument(string docName)
    {
        //read file
        if (WebOperationContext.Current != null)
        {
            WebOperationContext.Current.OutgoingResponse.ContentType = "application/pdf";
        }
        //return file stream
    }
}

但是当我使用上述方法进行单元测试(使用moq)时,如果保存到文件中,我不会得到预期的流pdf。

这意味着pdf应该与我在浏览相同的wcf服务托管网址时获得的内容相同。

有人能就这个问题给我一些建议吗?

1 个答案:

答案 0 :(得分:0)

我得到了它的工作,问题是在单元测试中将流保存到文件的方式。它应该使用BinaryWriter完成,而不是普通的流保存到文件,

Stream serviceResult = documentReaderMock.GetDocument("abc");

using (FileStream fileStream = File.Create(_sourceFilePath + "\\DownloadedFile.pdf",(int)serviceResult.Length))
{
  BinaryWriter bw = new BinaryWriter(fileStream);
  byte[] bytesInStream = new byte[serviceResult.Length];
  serviceResult.Read(bytesInStream, 0, bytesInStream.Length);
  bw.Write(bytesInStream);
  bw.Close();
}