Вы можете создать поддомен (a и b) и использовать на своем веб-сайте
Если вы размещали свой домен за пределами Amazon, вы можете использовать маршрут 53 или адрес fwd в CNAME.
Подробные сведения см. По следующим ссылкам
Это зависит, как близко Ваш код к nuts'n'bolts; например, Вы могли работать в Stream
s вместо этого, и передача a MemoryStream
к коду (и проверка содержание). Вы могли просто записать в файловую систему (во временной области), проверить содержание и угробить ее впоследствии. Из того, если Ваш код немного выше файловой системы, Вы могли бы записать mockable IFileSystem
интерфейс с высокоуровневыми методами Вам нужно (как WriteAllBytes
/ WriteAllText
). Это была бы боль для насмешки API потоковой передачи, все же.
Для загрузки с Интернета (или притворство на)... Вы могли (например), записать IWebClient
интерфейс с функциями Вам нужно (как DownloadString
, и т.д.); дразните его, чтобы возвратить зафиксированное содержание и использовать что-то как WebClient
как основание для фактической реализации. Конечно, необходимо будет протестировать фактическую реализацию против реальных сайтов.
Если метод должен открыть сам поток файла, то это трудно дразнить. Однако, если можно передать поток в метод и заставить его записать в это, затем можно передать в MemoryStream вместо этого. Альтернативная перегрузка может взять меньше параметров, открыть файл и передать FileStream другому методу.
Таким образом, Вы не получаете полный обзор (если Вы не пишете тест или два, который действительно поражает диск), но большая часть Вашей логики находится в полностью протестированном коде, в рамках метода, берущего Потоковый параметр.
Если цель Вашего теста состоит в том, чтобы протестировать это, файл на самом деле создается, это - интеграционный тест и не модульный тест.
Если цель он для тестирования этого, которое надлежащие вещи записаны в файл скройте доступ к файлу позади интерфейса и обеспечьте в реализации памяти.
То же верно для доступа веб-страницы.
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, можно найти то, что должно быть записано в диск.
Вы на самом деле не хотите выполнять вызов, чтобы записать файл непосредственно в Вашей функции, но вместо этого перенести файловый ввод-вывод в классе с интерфейсом.
Можно затем использовать что-то как Насмешки Носорога для создания ложного класса, реализовывая интерфейс.