我有一个单元测试,在其中模拟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());