我有一个单元测试,在其中模拟HttpPostedFileBase文件并将它们放在列表中。然后,单元测试将像这样调用一个邮件服务(不相关的参数(如to,from,subject除外)

[Test]
public void SendMailWithFile()
{
    bool result = Services.Mail.MailService.SendMailWithFile(uploadedFiles);


uploadFiles变量是这样的:List<Mock<HttpPostedFileBase>> uploadedFiles

mailService(单元测试调用)如下所示:

public static bool SendMailWithFile(List<HttpPostedFileBase> uploadedFiles)


现在一切正常,模拟列表中确实包含文件(这意味着它不为空),但是出现了此错误。

无法转换

System.Collections.Generic.List<Moq.Mock<System.Web.HttpPostedFileBase>




System.Collections.Generic.List<System.Web.HttpPostedFileBase>

最佳答案

您必须使用Object属性从HttpPostedFileBase对象获取模拟对象(在您的情况下为Mock<T>)。

应该这样做:

bool result = Services.Mail.MailService.SendMailWithFile(
    uploadedFiles.Select(x => x.Object).ToList());

09-27 20:53