mic*_*oss 5 wpf unit-testing moq mocking
我正在尝试对从我的 ViewModel 调用的这个方法进行单元测试:
public virtual string[] ExtractFilePaths(DragEventArgs dragEventArgs)
{
string[] droppedPaths = null;
if (dragEventArgs.Data.GetDataPresent(DataFormats.FileDrop))
{
droppedPaths = dragEventArgs.Data.GetData(DataFormats.FileDrop, true) as string[];
}
return droppedPaths;
}
Run Code Online (Sandbox Code Playgroud)
我将这种方法与 Caliburn 联系起来。我知道这是一个非常简单的方法,几乎只使用框架类,但我觉得它仍然需要测试。问题是,Moq 不能模拟 DragEventArgs。有没有办法解决这个问题,或者我不应该费心测试这种方法?
小智 4
希望我没有错过 Calibrun 的任何东西,但是DragEventArgs当你可以创建一个时为什么要嘲笑呢?重要的部分是IDataObject部分,它是一个接口,很容易被模拟。
[Test]
public void ExtractFilePaths_WithFileDrop_ReturndDropPaths()
{
var fileList = new[] {@"c:\path\path\file1.txt", @"d:\path2\path2\file2.txt"};
var stubData = Mock.Of<IDataObject>(x =>
x.GetDataPresent(DataFormats.FileDrop) == true &&
x.GetData(DataFormats.FileDrop, true) == fileList);
var dragEventArgs = new DragEventArgs(stubData, 0, 0, 0, DragDropEffects.Move, DragDropEffects.Scroll);
var subject = new Subject();
// Act
var result = subject.ExtractFilePaths(dragEventArgs);
// Assert
Assert.That(result, Is.Not.Null, "Expected array to be returned");
Assert.That(result, Is.EquivalentTo(fileList));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1654 次 |
| 最近记录: |