Используя фиктивные объекты за пределами тестирования, плохой практики?

Я думаю, что-то кодирует ваш \n в 
 на стороне сервера, и Safari удаляет его снова, а не другие браузеры, добавляющие его.

Этот HTML-код отлично работает для меня в Chrome (сохраните его в файле с именем a.html на рабочем столе и откройте его):

<html><body><img src="data:image/png;base64, iVBORw0KGgoAAAAN
  SUhEUgAAAAUA
  AAAFCAYAAACNbyblAA
  AAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
  9TXL0Y4OHwAAAABJRU5ErkJggg=="></img></body></html>

Я думаю, что вам, возможно, потребуется добавить больше кода в свой вопрос показывая, как вы извлекаете данные, base64 их, включаете их в страницу, отправляемую в браузер и т. д.

Кроме того, посмотрите на необработанные ответы с вашего сервера, в инструментах разработчика браузера или прокси отладки в Интернете, например Fiddler, чтобы точно увидеть, что отправляет ваш сервер - использование Inspect Element может показывать вам данные после того, как они проанализированы / интерпретированы / обработаны, а не необработаны

5
задан John Farrell 15 December 2008 в 16:11
поделиться

3 ответа

Существует шаблон разработки под названием Несуществующий объект. Несуществующий объект является объектом, который реализует Интерфейс, таким образом, он мог использоваться в сценарии как Ваш.

Важная вещь о Несуществующем объекте, это не возвращает пустой указатель в местах, где это могло повредить систему.

Цель Несуществующего объекта состоит в том, чтобы иметь пустую и простую реализацию чего-то, точно так же, как Насмешка, но использоваться в продуктивной среде.

Самый простой пример - что-то вроде этого:

class Logger{
 private static ILogger _Logger;

 static Logger(){
  //DI injection here
  _Logger = new NullLogger(); //or
  _Logger = new TraceLogger();
 }
}

interface ILogger{
 void Log(string Message);
}

internal class TraceLogger:ILooger{
 public void Log(string Message){
  //Code here
 }
}

internal class NullLogger{
 public void Log(string Message){
  //Don't don anything, in purporse
 }
}

Я надеюсь, что это могло помочь Вам

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

Это звучит мне как Вы, может хотеть взглянуть на шаблон "proxy". Вы хотите что-то, что действует как различные сервисы, даже когда разъединено от практической эксплуатации. Поэтому Ваш код был бы более обеспечен говорящий с прокси вместо реальной вещи. Затем прокси может сделать то, что он должен в зависимости от текущего состояния соединения.

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

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

Если Вы говорите о в тестовых ситуациях: Насмешки являются тестом, удваивается. Нет ничего неправильно с тестированием фальшивок использования в противоположность насмешкам или тупикам. Если Вы не должны использовать сервис в определенном тесте, и он должен просто там обеспечить данный интерфейс, от которого объект под тестом имеет зависимость затем что он прекрасный. Это не повреждает принципала тестирования.

Хорошие библиотеки насмешки стирают грани между насмешками, тупиками и фальшивками.

Взгляните на часть информации от Martin Fowler на различных типах теста, удваивается. Насмешки не Являются Тупиками, TestDoubles.

Мне действительно нравится способ, которым moq позволяет континуум между макетом, фальшивкой, тупиковыми и фиктивными объектами без Вас бывший должный перейти через обручи для получения определенных поведений.Попробуйте.

Если Вы говорите об использовании насмешек в Вашем разъединенном сценарии для производственного использования... Я был бы взволнован. Фальшивка собирается возвратить несуществующие объекты или значения по умолчанию для любых вызовов, которые Вы выполняете. Это пропустит сложность в весь код, использующий эти сервисы (они должны будут обработать проверку пустые возвращаемые значения и пустые массивы...). Я думаю, что имело бы больше смысла для Вашего разъединенного / стерильный сценарий быть кодированным для обработки этого, сами зависимости недоступны вместо того, чтобы принять ложные реализации их и продолжиться, как будто все работает.

4
ответ дан 18 December 2019 в 13:20
поделиться
Другие вопросы по тегам:

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