Почему рамки не идут в обход? - PullRequest
0 голосов
/ 29 апреля 2011

Я код модульного тестирования, который зависит от библиотеки PDF с открытым исходным кодом iTextSharp. Одним из классов 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, а не макет:

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

1 Ответ

0 голосов
/ 20 сентября 2011

Я предполагаю, что вы пытаетесь разрядить вызов конструктора, который принимает массив байтов. Попробуйте удалить параметр экземпляра в вашей перегрузке конструктора:

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