Mocking System.Collections.Generic.IList with Moq



我正在努力为我的类AttachmentProcessor编写单元测试。我的目标是测试所有方法并模拟例如IList文件列表。

    public class AttachmentsProcessor
    {
      public IList<IFileInfo> FileList { get; set; }
    public AttachmentsProcessor(IList<IFileInfo> FileList)
    {
       ...
    }
    public void RemoveAttachment(int index)
    {
     ...
    }
    public long GetTotalFilesSize()
    {
     ...
    }
    public void GetFilesFromDialog(IOpenFileDialog2 openFileDialog1)
    {
     ...
    }   
}

接口:

public interface IFileProcessor
{
    IList<IFileInfo> FileList { get; set; }
    void RemoveAttachment(int index);
    long GetTotalFilesSize();
    void GetFilesFromDialog(IOpenFileDialog2 openFileDialog1);
}

我已经解决了我的问题。我的问题是我不知道如何为我的类附件处理器:IFileProcessor 和列表进行模拟。我最终得到了这个解决方案,它奏效了!感谢所有回复。

        var mockFileProcessor = new Mock<IFileProcessor>(); //here is how I mocked my AttachmentProcessor
        var mockAttachmentInfo = new Mock<IFileInfo>(); ///here is how I mocked my AttachmentInfo
        mockAttachmentInfo.Setup(m => m.Length).Returns(() => 200);
        mockFileProcessor.Setup(m => m.FileList).Returns(() => new List<IFileInfo> 
        {
         mockAttachmentInfo.Object,
         mockAttachmentInfo.Object,
         mockAttachmentInfo.Object, 
         mockAttachmentInfo.Object,
         mockAttachmentInfo.Object 
        }); /// and this is the part where I mocked my IList<AttachmentInfo>

我最终得到了这个解决方案,它奏效了!感谢所有回复

最新更新