简体   繁体   English

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

[英]How to test if variable have streams of byte using xunit in C#

I am newbie to XUnit,I need to write unit test for a method which generate streams of data (byte[] array) and set it to variable.我是 XUnit 的新手,我需要为生成数据流(字节 [] 数组)并将其设置为变量的方法编写单元测试。 I need to verify if that variable have data(bytes)我需要验证该变量是否有数据(字节)

Below is the method下面是方法

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;
        }
}

I have written Unit test, but I'm confused how would I assert whether variable ContentStream have data or not我已经编写了单元测试,但我很困惑如何断言变量 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
    }

Check that result contains a ContentStream, then check the length of the stream.检查结果是否包含 ContentStream,然后检查 stream 的长度。

Something like:就像是:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM