为什么框架不绕路?

时间:2011-04-29 14:08:31

标签: moles

我是单元测试代码,依赖于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

1 个答案:

答案 0 :(得分:0)

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

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