如何填充OpenFileDialog.ShowDialog方法
本文关键字:OpenFileDialog ShowDialog 方法 填充 何填充 | 更新日期: 2024-09-24 01:54:57
我有一个WPF ViewModel,它有一个打开文件对话框的命令,如下所示:
var dlg = new OpenFileDialog();
var result = dlg.ShowDialog();
现在我想对该命令进行单元测试。ShowDialog是从CommonDialog继承的一个方法,所以我认为我可以像这样填充它:
Microsoft.Win32.Fakes.ShimCommonDialog.AllInstances.ShowDialog = () => true;
但是我得到了以下编译错误:
委托
Microsoft.QualityTools.Testing.Fakes.FakesDelegates.Func<Microsoft.Win32.CommonDialog,bool?>
不接受0个参数
有什么想法吗?
下面的代码将满足您的需要。
被测系统(SUT)
public class Sut
{
public bool SomeMethod()
{
var dlg = new OpenFileDialog();
var result = dlg.ShowDialog();
return result.Value;
}
}
单元测试(使用MS Fakes)
using System;
using Microsoft.QualityTools.Testing.Fakes;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Win32.Fakes;
using WpfApplication1;
[TestMethod]
public void SomeTest()
{
using (var context = ShimsContext.Create())
{
Nullable<bool> b2 = true;
ShimCommonDialog.AllInstances.ShowDialog = (x) => b2;
var sut = new Sut();
var r = sut.SomeMethod();
Assert.IsTrue(r);
}
}
请注意,您需要在测试中拥有PresentationFramework.40.0.0.Fakes程序集以及正确的附加Fakes程序集。