我真的想要測試每當發生一個動作時發送通知電子郵件的方法。該方法中的大部分參數都是硬編碼的。喜歡電子郵件模板有參數主題,標題和正文。我的方法參數是userMailId,adminName和ControllerContext用於生成模板。單元測試C#中的void方法?
我的代碼
公共無效的SendMail(ControllerContext,管理員,用戶列表) { 嘗試 {VAR =的templatePath的String.Empty; var subject = string.Empty; var viewModel = new EmailModel();
switch (pathid)
{
case 0:
if (pathId == 3)
templatePath = "AllCategoryTemplate";
else
templatePath = "SpecificTemplate";
break;
case 1:
templatePath = "AllTemplate";
break;
case 2:
templatePath = "CategoryTemplate";
break;
}
switch (urlId)
{
case 1:
viewModel.ItemUrl = "itemurl";
break;
case 2:
viewModel.ItemUrl = "itemurl1";
break;
case 3:
viewModel.ItemUrl = "itemurl2";
break;
default:
viewModel.ItemUrl = "itemurl23";
break;
}
foreach (var user in userList)
{
viewModel.FirstName = user.FirstName;
viewModel.LastName = user.LastName;
string bodyOftheContent = Generator.TemplateGeneration(ControllerContext,tempatePath);
Object.SendCustomMail(user.Email, bodyOftheContent, subject);
}
}
catch(Exception ex)
{
LogExtension.LogError("Error in sending notification email", ex, MethodBase.GetCurrentMethod());
}
}
你能發佈你的代碼嗎?你有什麼版本的Microsoft Visual Studio? – zaitsman
包含此方法的類未正確設計。在單元測試中,你真的不想實際發送電子郵件。但是想要測試模板生成。你想把他們分成不同的班級。 – Wazner
@Wazner這不一定正確。閱讀微軟假貨。你可以生成一個模板,併發送電子郵件,然後在單元測試中用電子郵件客戶端替代填充,然後瞧 - 發送電子郵件發送匹配的預期模板處理。 – zaitsman