Silverlight в браузере UnitTesting Mock <FileInfo> - PullRequest
0 голосов
/ 07 октября 2010

Я сталкиваюсь с трудностями при использовании UnitTesting в Silverlight (inbrowser) с использованием Mock для считывания файла в мою ViewModel.

 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");


Спасибо, Джонни, я сделал так, как следует, и не работал, и вот мой пример кода.

новый класс интерфейса

открытый интерфейс IFileInfo {string Name {get; set;} FileStream Open (режим FileMode); }

новый класс Wrapper

открытый класс FileInfoWrapper: IFileInfo {частный FileInfo fileInfo; public FileStream OpenRead () {вернуть this.OpenRead (); } публичная строка Name {get {return this.Name; } set {this.Name = value; }}

} * * тысяча двадцать-один

В моем тестовом классе

[TestMethod] [Асинхронный] 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))
        {

// Файл для чтения и возврата растрового кода, который работает нормально }}

1 Ответ

0 голосов
/ 07 октября 2010

Из кода, который вы написали, я предполагаю, что вы пытаетесь использовать среду moq, которая использует синтаксис

var fileInfo = new Mock<Interface>();

Вам необходимо указать тип, чтобы платформа могла понять, какое поведение ожидать.

в этом случае вы не сможете заменить Interface на FileInfo, так как FileInfo - это конкретный класс. Ваши альтернативы:

  1. найдите абстрактный класс или интерфейс, который реализует класс FileInfo, который содержит методы, которые вам нужно использовать, и при использовании переменной в вашем представлении объявите его как этот тип

  2. (более вероятно) создать класс, который обертывает класс Fileinfo, и интерфейс, который он реализует, который включает в себя необходимые методы, и объявить вашу переменную в вашем представлении как этот тип интерфейса. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...