[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
メソッドは、それを模擬するために仮想でなければなりません。非仮想メソッドをモックする方法はありますか?非仮想メソッドをモックする方法は?
私はこの手法を使うのがいいと思うし、インタフェースを使うことには確かに利点があると思う。しかし、非仮想メソッドを2つのオプションの間で評価している場合は、1)仮想化、2)インタフェースの一部としての使用、2の1の利点は何ですか? 2を選択しても、メソッドがバーチャルになっているのは、インターフェイスの一部になっているからです。 – zumalifeguard