Silverlight在浏览器UnitTesting Mock <FileInfo>中

我在使用Mock在我的ViewModel中读取文件的Silverlight(inbrowser)UnitTesting中遇到困难。

 It gives me an AccessDenied error message. Is there another alternative method for that kind of problem?

 My UnitTesting is DragAndDrop Image file in Silverlight 4.

例如:unittesing.cs

var fileInfo = new Mock(); //我无法模拟FileInfo

var fileInfo = new FileInfo(“test.jpg”);


谢谢Jonny,我按照以下步骤工作,而不是工作,这里是我的示例代码剪切。

新的界面类

public interface IFileInfo {string Name {get; set;} FileStream Open(FileMode mode); }

新的包装类

公共类FileInfoWrapper:IFileInfo {私人FileInfo fileInfo; 公共FileStream OpenRead(){返回this.OpenRead(); } public string Name {get {return this.Name; } set {this.Name = value; }}

}

在我的测试课上

[TestMethod] [Asynchronous] public void MultiFileDropTest(){list wrapperList = new list(); fileInfo.Setup(fl => fl.Name).Returns(“testing.jpg”);

    fileInfo.Setup<Stream>(fl => fl.OpenRead()).Returns(fileStream.Object);

    wrapperList .Add(fileInfo.Object);
    wrapperList .Add(fileInfo.Object);

    idataObject.Setup(p => p.GetData(DataFormats.FileDrop)).Returns(wrapperList .ToArray());

}

//我的函数(ViewModel)public BitmapImage SingleImageDropTest(IDataObject iData){............. var files =(FileInfo [])dataObject.GetData(DataFormats.FileDrop);

        ...taking the first file from the files collection
        FileInfo file = files[0];

        if (file != null && IsImageFile(file.Extension))
        {

//文件读取并返回工作正常的位图代码}}


从你写的代码中,我猜你正在尝试使用moq框架,它使用语法

var fileInfo = new Mock<Interface>();

您需要提供一种类型,以便框架能够预测期望的行为。

在这种情况下,您将无法将Interface替换为FileInfo,因为FileInfo是一个具体的类。 您的选择是:

  • 找到FileInfo类实现的抽象类或接口,它具有您需要使用的方法,并且在视图上使用变量时,将其声明为该类型

  • (更可能)创建一个包装Fileinfo类的类以及它实现的接口,其中包含您需要的方法,并将视图中的变量声明为该接口类型。

  • 链接地址: http://www.djcxy.com/p/54055.html

    上一篇: Silverlight in browser UnitTesting Mock<FileInfo>

    下一篇: how to mock an interface that needs to be cast to another interface?