在传递给委托的方法中调用方法本身时,如何验证是否在模拟上调用了方法Task.Run?按时间mock.Verify调用任务仍然没有执行.
我之前尝试过await Task.Delay,mock.Verify但这似乎让测试跑者不知所措.
使用的原因Task.Run是卸载逻辑以防止攻击者在执行时能够区分系统中是否存在电子邮件地址.
using System.Threading.Tasks;
using System.Web.Mvc;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
namespace AsyncTesting
{
class MyController : Controller
{
public IEmailService EmailService { get; set; }
public MyController(IEmailService emailService)
{
EmailService = emailService;
}
public ViewResult BeginPasswordReset(string emailAddress)
{
BeginPasswordResetAsync(emailAddress);
return View();
}
private Task BeginPasswordResetAsync(string emailAddress)
{
return Task.Run(delegate
{
EmailService.Send(emailAddress);
});
}
}
internal interface IEmailService
{
void Send(string emailAddress);
}
internal class MyControllerTests
{
[TestMethod]
public …Run Code Online (Sandbox Code Playgroud)