gpt4 book ai didi

c# - 在类中有公共(public)方法而不在接口(interface)中有什么意义?

转载 作者:太空宇宙 更新时间:2023-11-03 19:09:38 27 4
gpt4 key购买 nike

例如:

public interface IMessageService
{
void ProcessMessages(IEnumerable<Message> messages);
}

实现接口(interface):

public class MessageService : IMessageService
{
public void ProcessMessages(IEnumerable<Message> messages)
{
// whatever
}
}

然后意识到 ProcessMessages 应该被分解一点来处理消息的不同部分:

public class MessageService : IMessageService
{
public void ProcessMessages(IEnumerable<Message> messages)
{
foreach (var msg in messages)
{
ProcessCustomer(msg.Customer);
}
}

private bool ProcessCustomer(Customer c)
{

}
}

接下来,想要对 ProcessCustomer 进行单元测试,所以将 ProcessCustomer public 设为 public 并且在这一点上,如果没有转换就无法访问该方法,所以是什么重点是什么?

最佳答案

考虑以下。你去披萨店,想尝尝他们的意大利辣香肠披萨。您想测试香肠切片机的工作原理吗?不。您希望在比萨上看到五根意大利辣香肠 - 这是比萨店的要求。实际上,香肠是手工切的还是用切片机切的都无关紧要。您应该只验证所有要求 是否已正确实现。

与您的类(class)相同 - 它的要求是处理消息。消息处理的实现方式并不重要——它是否在内部调用了一些辅助方法。因此,我的建议始终如一 - 不要测试私有(private)方法 - 它们不需要存在,也不应测试它们的存在。

关于c# - 在类中有公共(public)方法而不在接口(interface)中有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21891918/

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