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. 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
[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.
Something like:
var result = _smtpEmailSender.BuildEmailI(SmptpUrl, mailDTO);
Assert.NotNull(result.ContentStream);
Assert.Equal(expectedContentStreamLength, result.ContentStream.Length);