Как к модульному тесту метод записи файла со встроенными автоматизированными тестами Visual Studio?

Вы можете создать поддомен (a и b) и использовать на своем веб-сайте

  1. my-portal.com
  2. a.my-portal.com
  3. b.my-portal.com

Если вы размещали свой домен за пределами Amazon, вы можете использовать маршрут 53 или адрес fwd в CNAME.

Подробные сведения см. По следующим ссылкам

5
задан Jader Dias 16 January 2009 в 12:59
поделиться

4 ответа

Это зависит, как близко Ваш код к nuts'n'bolts; например, Вы могли работать в Streams вместо этого, и передача a MemoryStream к коду (и проверка содержание). Вы могли просто записать в файловую систему (во временной области), проверить содержание и угробить ее впоследствии. Из того, если Ваш код немного выше файловой системы, Вы могли бы записать mockable IFileSystem интерфейс с высокоуровневыми методами Вам нужно (как WriteAllBytes / WriteAllText). Это была бы боль для насмешки API потоковой передачи, все же.

Для загрузки с Интернета (или притворство на)... Вы могли (например), записать IWebClient интерфейс с функциями Вам нужно (как DownloadString, и т.д.); дразните его, чтобы возвратить зафиксированное содержание и использовать что-то как WebClient как основание для фактической реализации. Конечно, необходимо будет протестировать фактическую реализацию против реальных сайтов.

6
ответ дан 18 December 2019 в 09:10
поделиться

Если метод должен открыть сам поток файла, то это трудно дразнить. Однако, если можно передать поток в метод и заставить его записать в это, затем можно передать в MemoryStream вместо этого. Альтернативная перегрузка может взять меньше параметров, открыть файл и передать FileStream другому методу.

Таким образом, Вы не получаете полный обзор (если Вы не пишете тест или два, который действительно поражает диск), но большая часть Вашей логики находится в полностью протестированном коде, в рамках метода, берущего Потоковый параметр.

7
ответ дан 18 December 2019 в 09:10
поделиться

Если цель Вашего теста состоит в том, чтобы протестировать это, файл на самом деле создается, это - интеграционный тест и не модульный тест.

Если цель он для тестирования этого, которое надлежащие вещи записаны в файл скройте доступ к файлу позади интерфейса и обеспечьте в реализации памяти.

То же верно для доступа веб-страницы.

interface IFileService
{
     Stream CreateFile(string filename); 
}

class InMemoryFileService : IFileService
{
    private Dictionary<string, MemoryStream> files = new Dictionary<string, MemoryStream>();

    public Stream CreateFile(string filename)
    {
       MemoryStream stream = new MemoryStream();
       files.Add(filename, stream);
       return stream;
    }

    public MemoryStream GetFile(string filename)
    {
         return files[filename];
    }
} 

Используя GetFile, можно найти то, что должно быть записано в диск.

4
ответ дан 18 December 2019 в 09:10
поделиться

Вы на самом деле не хотите выполнять вызов, чтобы записать файл непосредственно в Вашей функции, но вместо этого перенести файловый ввод-вывод в классе с интерфейсом.

Можно затем использовать что-то как Насмешки Носорога для создания ложного класса, реализовывая интерфейс.

1
ответ дан 18 December 2019 в 09:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: