【发布时间】:2018-12-02 21:11:51
【问题描述】:
我的模拟类和方法:
public class EmailService: IEmailService
{
private readonly ISendGridClient _client;
public EmailService(ISendGridClient client)
{
_client = client;
}
public async Task SendAsync(string email, string senderAderess, string senderName, string recipientName, string subject, string content, string htmlContent)
{
var from = new EmailAddress(senderAderess, senderName);
var to = new EmailAddress(email, recipientName);
var plainContent = content;
var msg = MailHelper.CreateSingleEmail(from, to, subject, plainContent, htmlContent);
await _client.SendEmailAsync(msg);
}
}
并对其进行单元测试
public async void EmailService_SendingEmail_EmailSentSuccessfullyAsync()
{
var test = 0;
var mockEmailClient = new Mock<ISendGridClient>();
mockEmailClient.Setup(x => x.SendEmailAsync(new SendGridMessage(), CancellationToken.None)).Callback(() => test++);
var emailSender = new EmailService(mockEmailClient.Object);
await emailSender.SendAsync("mail@gmail.com", "SenderDemo", "Ilya", "EmailServiceUnitTest", "Demo", "Test",
"<strong>Hello</strong>");
Assert.Equal(1, test);
}
问题是我的 mock 没有提升我的回调方法
可能是由于模拟方法的异步性质造成的问题,但我真的需要你的帮助:)
【问题讨论】:
-
请添加
ISendGridClient的方法
标签: c# .net unit-testing moq