gpt4 book ai didi

c# - 使用调解器模式进行单元测试 - 所有私有(private)到公共(public)

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

我正在使用中介者模式来促进 GUI 对象的单元测试。

伪代码示例:

Class MyGuiClass
{
//... Declare and initialize mediator to be a MyMediator
private void On_SomeButtonPressed()
{
mediator.SomeButtonWasPressed();
}
}

Class MyMeditator
{
public void On_SomeButtonPressed()
{
//.. Do something now that the button was pressed
}

}

这很好,因为我现在可以对按下 SomeButton 时发生的情况进行单元测试,而无需创建窗口。

我担心的是,我采用了一种私有(private)方法,并将其公开给任何调用调解器的人。过去我这样做过,但它并没有打扰我,因为我没有太多必须公开的方法。

我目前正在重构一个非常大的类以使用此模式,我想知道是否可以通过某种方式控制谁可以创建 MyMediator 或某些方法对哪些类公开的可见性。 (这可能不可能,甚至不需要,但我想我会问。)

(我正在使用 C# 3.0 和 .NET 3.5 SP1)

最佳答案

我认为没关系.. 除了 gui,谁有调解器的实例?如果有人这样做,它会调用该方法吗?如果有,这重要吗?是否很难注意到、诊断和修复错误?

我认为您可以通过事件实现您想要的:

例如

/* in the gui class (view) */
public event EventHandler OnButtonClicked;

/* in the mediator */
public MyMediator(MyView view)
{
view.OnButtonClicked += HandleButtonClicked;
}

private void HandleButtonClicked(object sender, EventArgs e)
{

}

关于c# - 使用调解器模式进行单元测试 - 所有私有(private)到公共(public),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1664201/

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