我是单元测试代码,依赖于iTextSharp开源Pdf库。 inTextSharp中的一个类是PdfReader,其中一个构造函数接受字节数组。我将问题简化为以下内容:
[TestMethod]
[HostType("Moles")]
public void ReadPdf()
{
MPdfReader.ConstructorByteArray = (@this, pdfIn) =>
{
new MPdfReader(@this)
{
};
};
PdfReader reader = new PdfReader(new byte[] { 10, 20, 30 });
}
但是,这段代码仍然调用真正的PdfReader而不是mock:
iTextSharp.text.pdf.PdfReader.CheckPdfHeader iTextSharp.text.pdf.PdfReader.ReadPdf() iTextSharp.text.pdf.PdfReader..ctor(Byte [] pdfIn,Byte [] ownerPassword) iTextSharp.text.pdf.PdfReader..ctor(Byte [] pdfIn)
并不奇怪,它爆炸了“..System.IO.IOException:找不到PDF标题签名..”
不确定我做错了什么......
-Stan
答案 0 :(得分:0)
我假设你试图化解接受字节数组的构造函数调用。尝试删除构造函数重载中的instance参数:
[TestMethod]
[HostType("Moles")]
public void ReadPdf()
{
MPdfReader.ConstructorByteArray = (@this, pdfIn) =>
{
new MPdfReader()
{
};
};
PdfReader reader = new PdfReader(new byte[] { 10, 20, 30 });
}