Narrow ISmtpClient to the four operations MailSender actually uses, behind a Yavsc.Interfaces.ISmtpClientFactory. Production wires MailKitSmtpClient (SmtpClientFactory); tests wire a recording fake (RecordingSmtpClientFactory). The fake is pre-registered in WebServerFixture so SMTP calls are short-circuited; the EMailling test now asserts the Connect -> Authenticate -> Send -> Disconnect sequence. Yavsc.Abstract stays free of MailKit/MimeKit.
14 lines
409 B
C#
14 lines
409 B
C#
using Yavsc.Interfaces;
|
|
|
|
namespace Yavsc.Services
|
|
{
|
|
/// <summary>
|
|
/// Production <see cref="ISmtpClientFactory"/>: hands out a
|
|
/// fresh <see cref="MailKitSmtpClient"/> per call. Stateless;
|
|
/// safe to register as a singleton.
|
|
/// </summary>
|
|
public sealed class SmtpClientFactory : ISmtpClientFactory
|
|
{
|
|
public ISmtpClient CreateClient() => new MailKitSmtpClient();
|
|
}
|
|
}
|