0

我是依赖于 iTextSharp 开源 Pdf 库的单元测试代码。TextSharp 中的类之一是 PdfReader,它具有接受字节数组的构造函数之一。我将问题简化为以下内容:

    [TestMethod]
    [HostType("Moles")]
    public void ReadPdf()
    {
        MPdfReader.ConstructorByteArray = (@this, pdfIn) =>
        {
            new MPdfReader(@this)
            {                    
            };
        };

        PdfReader reader = new PdfReader(new byte[] { 10, 20, 30 });
    }

但是,此代码仍然调用真正的 PdfReader 而不是模拟:

iTextSharp.text.pdf.PdfReader.CheckPdfHeader iTextSharp.text.pdf.PdfReader.ReadPdf() iTextSharp.text.pdf.PdfReader..ctor(Byte[] pdfIn, Byte[] ownerPassword) iTextSharp.text.pdf.PdfReader.. ctor(字节[] pdfIn)

毫不奇怪,它因“..System.IO.IOException: PDF header signature not found..”而爆炸

不知道我做错了什么......

-斯坦

4

1 回答 1

0

我假设您正试图化解接受字节数组的构造函数调用。尝试在构造函数重载中删除实例参数:

[TestMethod]
[HostType("Moles")]
public void ReadPdf()
{
    MPdfReader.ConstructorByteArray = (@this, pdfIn) =>
    {
        new MPdfReader()
        {
        };
    };
    PdfReader reader = new PdfReader(new byte[] { 10, 20, 30 });
}
于 2011-09-20T18:40:57.710 回答