我有一个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服务托管网址时获得的内容相同。
有人能就这个问题给我一些建议吗?
答案 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();
}