最小起订量与 c# System.Windows.MessageBoxButton.YesNoCancel
Moq with c# System.Windows.MessageBoxButton.YesNoCancel
我目前正在围绕程序的 WPF 模块编写一些单元测试。我已经到了 ShowMessage
return 语句中的 Yes
或 No
值的地步。
dService.ShowMessage(view, args);
args 采用 lambda 作为(缩短)
new MessageArgs(arg1, arg2, arg3, (la) =>
{
if (la.result == messResult.yes)
{
// do something
}
}
我现在正试图模拟从这个 lambda 返回的结果,但我遇到了一些困难,而且一直无法找到有类似问题的人。
我尝试在单元测试中的 lambda 中设置默认结果:
new MessageArgs(arg1, arg2, arg3, (la) =>
{
if (la.result == messResult.yes)
{
la.result = messResult.yes;
}
}
尝试将语句下方的 arg 结果设置为:
args.result = messResult.yes;
我也曾尝试将安装程序用作:
dServiceMock.Setup(x => x.ShowMessage)
但是没有 return 属性 因为 ShowMessage
是一个空函数。
None 显示了我的单元测试中的操作变化。有没有其他人有类似的 "problem" 并找到了解决方案或知道一些关于此的文档?如果我同时发现了什么,我会更新这个。
谢谢。
如果 dService
不是 sealed
class 的实例,创建一个 subclass 以您需要的方式覆盖 ShowMessage
方法为了您的测试目的。
编辑:
问题是由 dService.ShowMessage(view, args)
封装两个(或更多)操作的调用引起的:
- 通话 view.ShowMessage
- 调用包含在 args 中的 lambda,结果为 view.ShowMessage
现在您必须创建 dService.ShowMessage(view, args)
这样:
- 它不显示视图
- 它假定该操作的结果
- 以期望的结果调用 lambda
我目前正在围绕程序的 WPF 模块编写一些单元测试。我已经到了 ShowMessage
return 语句中的 Yes
或 No
值的地步。
dService.ShowMessage(view, args);
args 采用 lambda 作为(缩短)
new MessageArgs(arg1, arg2, arg3, (la) =>
{
if (la.result == messResult.yes)
{
// do something
}
}
我现在正试图模拟从这个 lambda 返回的结果,但我遇到了一些困难,而且一直无法找到有类似问题的人。
我尝试在单元测试中的 lambda 中设置默认结果:
new MessageArgs(arg1, arg2, arg3, (la) =>
{
if (la.result == messResult.yes)
{
la.result = messResult.yes;
}
}
尝试将语句下方的 arg 结果设置为:
args.result = messResult.yes;
我也曾尝试将安装程序用作:
dServiceMock.Setup(x => x.ShowMessage)
但是没有 return 属性 因为 ShowMessage
是一个空函数。
None 显示了我的单元测试中的操作变化。有没有其他人有类似的 "problem" 并找到了解决方案或知道一些关于此的文档?如果我同时发现了什么,我会更新这个。
谢谢。
如果 dService
不是 sealed
class 的实例,创建一个 subclass 以您需要的方式覆盖 ShowMessage
方法为了您的测试目的。
编辑:
问题是由 dService.ShowMessage(view, args)
封装两个(或更多)操作的调用引起的:
- 通话 view.ShowMessage
- 调用包含在 args 中的 lambda,结果为 view.ShowMessage
现在您必须创建 dService.ShowMessage(view, args)
这样:
- 它不显示视图
- 它假定该操作的结果
- 以期望的结果调用 lambda