gpt4 book ai didi

c# - 如何模拟非虚拟方法?

转载 作者:IT王子 更新时间:2023-10-29 04:08:04 26 4
gpt4 key购买 nike

[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 方法必须是虚拟的才能模拟它。有什么方法可以模拟非虚拟方法吗?

最佳答案

Moq 不能模拟类上的非虚拟方法。要么使用其他模拟框架,例如 Type mock Isolator它实际上将 IL 编织到您的程序集中或在 EmailService 上放置一个接口(interface)并模拟它。

关于c# - 如何模拟非虚拟方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11738102/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com