[TestMethod]
public void TestMethod1()
{
var mock = new Mock<EmailService>();
mock.Setup(x => x.SendEmail()).Returns(true);
var cus = new Customer();
var result = cus.AddCustomer(mock.Object);
Assert.IsTrue(result);
}
public class Customer
{
public bool AddCustomer(EmailService emailService)
{
emailService.SendEmail();
Debug.WriteLine("new customer added");
return true;
}
}
public class EmailService
{
public virtual bool SendEmail()
{
throw new Exception("send email failed cuz bla bla bla");
}
}
EmailService.SendEmail
yönteminin sahte olması için sanal olması gerekir. Sanal olmayan yöntemlerle uğraşmanın bir yolu var mı?Sanal olmayan yöntemler nasıl yapılır?
Bu tekniği kullanmanın iyi olduğunu düşünüyorum ve arayüz kullanmanın kesinlikle avantajları var. Ancak, sanal olmayan bir yöntemin iki seçenek arasında değerlendirilebileceğini düşünürseniz: 1) sanallaştırın, 2) arabirimin bir parçası olarak kullanın, 2'nin 2'nin avantajı nedir? 2'yi seçseniz bile, artık bir arabirimin parçası olduğu için yöntemi sanal olarak etkin bir şekilde yapıyorsunuz demektir. – zumalifeguard