Автоматизируйте тест коммуникации веб-сервиса

Я нашел способ сделать это с помощью CSS, но вы должны быть осторожны, так как это может измениться в зависимости от потока вашего собственного веб-сайта. Я сделал это для того, чтобы вставлять видео с постоянным соотношением сторон в пределах области ширины жидкости моего веб-сайта.

Предположим, что у вас есть встроенное видео:

<object>
     <param ... /><param ... />...
     <embed src="..." ...</embed>
</object>

Затем вы можете разместить все это внутри div с классом «видео». Этот видеокласс, вероятно, будет жидким элементом вашего сайта, который сам по себе не имеет прямых ограничений по высоте, но при изменении размера браузера он будет меняться по ширине в соответствии с потоком веб-сайта. Это будет тот элемент, который вы, вероятно, пытаетесь получить во встроенном видео, сохраняя при этом определенное соотношение сторон видео.

Чтобы сделать это, я поместил изображение перед встроенным объектом в «видео» "класс div.

!!! Важная часть состоит в том, что изображение имеет правильное соотношение сторон, которое вы хотите сохранить. Кроме того, убедитесь, что размер изображения максимально высок, чем самый маленький, который вы ожидаете от видео (или того, что вы поддерживаете A.R.), чтобы получить на основе вашего макета. Это позволит избежать любых возможных проблем при разрешении изображения при его изменении в процентах. Например, если вы хотите сохранить соотношение сторон 3: 2, не просто используйте изображение 3px на 2px. Он может работать при некоторых обстоятельствах, но я не проверял его, и, вероятно, было бы неплохо избежать.

Вероятно, вы уже должны иметь минимальную ширину, как это определено для жидкостных элементов вашего веб-сайта. Если нет, рекомендуется сделать это, чтобы избежать измельчения элементов или перекрытия, когда окно браузера становится слишком маленьким. В какой-то момент лучше иметь полосу прокрутки. Наименьшая по ширине веб-страница должна быть где-то около ~ 600 пикселей (включая столбцы фиксированной ширины), поскольку разрешение экрана меньше, если только вы не имеете дело с телефонами. !!!

Я использую полностью прозрачный png, но на самом деле я не думаю, что это имеет значение, если вы сделаете это правильно. Например:

<div class="video">
     <img class="maintainaspectratio" src="maintainaspectratio.png" />
     <object>
          <param ... /><param ... />...
          <embed src="..." ...</embed>
     </object>
</div>

Теперь вы можете добавить CSS, похожий на следующее:

div.video { ...; position: relative; }
div.video img.maintainaspectratio { width: 100%; }
div.video object { position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; }
div.video embed {width: 100%; height: 100%; }

Убедитесь, что вы также удалили любое явное объявление высоты или ширины внутри объекта и вставлять теги, которые обычно поставляются с копированным / вставленным кодом встраивания.

Способ, которым он работает, зависит от свойств позиции элемента класса видео и элемента, который вы хотите сохранить, определенного формата. Он использует то, как изображение будет поддерживать правильное соотношение сторон при изменении размера элемента. Он сообщает, что все еще находится в элементе видео класса, чтобы получить полную выгоду от недвижимости, предоставляемой динамическим изображением, заставляя ее ширину / высоту до 100% элемента видеокласса корректироваться с помощью изображения.

Довольно круто, а?

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

5
задан Guy 17 November 2008 в 23:35
поделиться

5 ответов

Я только что начал изучать http://www.soapui.org/, и кажется, что это будет работать приятно на тестирование веб-сервисов.

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

3
ответ дан 14 December 2019 в 13:52
поделиться

В целом очень хороший способ протестировать вещи как это состоит в том, чтобы использовать фиктивные объекты.

На работе мы используем продукт TypeMock для тестирования вещей как коммуникация веб-сервиса и другие внешние зависимости. Это стоит денег, так по этой причине это не может подойти для Ваших потребностей, но я думаю, что это - фантастический продукт. Я могу сказать Вам от личного опыта, что он интегрируется очень хорошо с NUnit и CCNet.

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

1
ответ дан 14 December 2019 в 13:52
поделиться

Смотрите на NMock2. Это - продукт насмешки открытого исходного кода и позволяет Вам создавать "виртуальные" реализации для интерфейсов, которые поддерживают богатое и глубокое взаимодействие.

Например, если Ваш интерфейс WS называют IService и имеет a Data GetData() метод, можно создать насмешку, которая требует, чтобы метод был назван однажды, и возвращает новое Data объект:

var testService = mockery.NewMock<IService>();
Expect
    .Once
    .On(testService)
    .Method("GetService")
    .WithNoArguments()
    .Will(
        Return.Value(new Data());

В конце теста звонить mockery.VerifyAllExpectationsHaveBeenMet() гарантировать что GetData метод на самом деле назвали.

P.S.: не путайте проект "NMock2" с "NMock RC2", который также называют "nmock2" на SourceForge. NMock2-проект, кажется, заменил NMock.

1
ответ дан 14 December 2019 в 13:52
поделиться

Это могло бы также быть чем-то - MockingBird. Выглядите полезными.

1
ответ дан 14 December 2019 в 13:52
поделиться

На моем рабочем месте мы используем Typemock и nUnit для нашего модульного тестирования.

0
ответ дан 14 December 2019 в 13:52
поделиться
Другие вопросы по тегам:

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