[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");
}
}
Run Code Online (Sandbox Code Playgroud)
该EmailService.SendEmail方法必须是虚拟的才能模拟它.有没有办法模拟非虚拟方法?
我正在尝试测试我使用模拟制作的一些类,但我已经看到c#中的所有免费模拟框架都无法模拟非虚方法(如果它不在接口中).
但是,有可以做到这一点的TypeMock,所以它是可能的.任何人都可以展示如何做到这一点?如果我能完成这项任务,我甚至可能会尝试为开源框架做出贡献.
提前致谢