微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在C#中使用xunit测试变量是否具有字节流

如何解决如何在C#中使用xunit测试变量是否具有字节流

我是 XUnit 的新手,我需要为生成数据流(byte[] 数组)并将其设置为变量的方法编写单元测试。我需要验证该变量是否有数据(字节)

下面是方法

public class SMTPEmailSender : IEmailSender
{
   private IPDFCreater _pdfCreater;
        private ILogger _log;

        public SMTPEmailSender(IPDFCreater pdfCreater,ILogger log)
        {
            _pdfCreater = pdfCreater;
            _log = log;
        }
public Email BuildEmail(string smptpurl,MailDTO mailRequest)
        {
            Email email = null;
            try
            {
                _
                var otp = new PDFData { OTP = mailRequest.OTP,Faxnumber = mailRequest.Faxnumber,FullName = mailRequest.FullName };
                
                
                email = new Email
                {
                    SMTPServerUrl = smptpurl,.
                      .
                    FromAddressdisplayName = mailRequest.FromAddressdisplayName,ContentStream = new MemoryStream(_pdfCreater.GeneratePDF(otp)),// This line calls a method and return byte array (byte[])
                    AttachmentName = mailRequest.FaxFileName

                };
                
            }
            catch (Exception ex)
            {
                
            }

            return email;
        }
}

我已经写了单元测试,但我很困惑如何断言变量 ContentStream 是否有数据

[Theory]
    [MemberData(nameof(GetFaxAsMailDTO))]
    public void BuildEmailInfo_ReturnsEmailObject(MailDTO faxMailDTO)
    {
        string SmptpUrl = "testurl";
        var result = _smtpEmailSender.BuildEmailI(SmptpUrl,mailDTO);
        // here I want to check the result.ContentStream have bytes of data or not
    }

解决方法

检查结果是否包含一个 ContentStream,然后检查流的长度。

类似于:

var result = _smtpEmailSender.BuildEmailI(SmptpUrl,mailDTO);
Assert.NotNull(result.ContentStream);
Assert.Equal(expectedContentStreamLength,result.ContentStream.Length);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。