2016-02-19 2 views
0

Итак, я хотел попасть в Испытательный проект и решил использовать Жасмин по моему проекту.Жасмин: приспособление не было загружено

Дело в том, что i не может заряжать светильники.

В 2 решения обычно Предлагаемые:

  1. Run хром с --allow-доступ к файлам, из-файлов
  2. Подавать файл из локального сервера

Так Я использовал первое решение, но никакого результата.

Затем я установил маршруты своего веб-сервера, чтобы localhost/fixture/my_fixture вернул бы содержимое my_fixture.html.

Поэтому, когда я вручную обращаюсь к localhost/fixture/my_fixture, содержимое прибора отображается на экране. Но в моем жасмин спецификации файла, когда я использую:

jasmine.getFixtures().fixturesPath = 'http://localhost/fixture' 
loadFixtures('quizz_fixture') 

я получаю следующие ошибки:

Error: Fixture could not be loaded: http://localhost/fixture/quizz_fixture 
(status: error, message: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'http://localhost/fixture/quizz_fixture?_=1455854875950'.) 

Когда я использовать URL, приведенный в ошибке, мой браузер отображает содержание без ошибок.

Поэтому я не понимаю причину этой ошибки. Кто-нибудь знает?

Edit:

  • Веб-сервер: Apache
  • Browser: Chrome
  • OS: для Windows 7

Edit 2

Проблема происходит от жасмин-Jquery, на линии 139 ниже, где строя функция вызывается. Я не могу понять, что происходит, как URL, который якобы не может быть загружен на самом деле загружает только штрафом в моем браузере:

jasmine.Fixtures.prototype.loadFixtureIntoCache_ = function (relativeUrl) { 
    var self = this 
     , url = this.makeFixtureUrl_(relativeUrl) 
     , htmlText = '' 
     , request = $.ajax({ 
     async: false, // must be synchronous to guarantee that no tests are run before fixture is loaded 
     cache: false, 
     url: url, 
     dataType: 'html', 
     success: function (data, status, $xhr) { 
      htmlText = $xhr.responseText 
     } 
     }).fail(function ($xhr, status, err) { 
      throw new Error('Fixture could not be loaded: ' + url + ' (status: ' + status + ', message: ' + err.message + ')') 
     }) 

Результат является:

Failed to load 'http://localhost/fixture/quizz_fixture.html?_=1456886216017' 

Который работает при вызове в браузер. Я просто не понимаю.

Спасибо.

ответ

0

Так что я нашел очень неудовлетворительное решение, но решение тем не менее.

Резюмируя

  1. Используя хром, я попытался загрузить жасмин арматуру из локального файла, который не будет работать с хромом (это то, что известно, инвалиды по соображениям безопасности).

  2. Я пробовал использовать флаг хрома --allow-file-access-from-files, но это не сработало. Поэтому я отказался от использования устройства из локального файла.

  3. Я понял, что файл крепления должен был быть подан с моего веб-сервера, который я сделал. Но это тоже не сработало, из-за некоторой ошибки Ajax, связанной с кэшированием светильников. Я попробовал обновить мою версию jquery (которая была немного старой), но это не сработало. В конце концов, я не смог понять, в чем проблема.

  4. Я скачал Firefox и попытался выполнением жасмина specRunner с конфигурацией точки выше (приспособление обслуживается веб-сервер), но опять же, это не сработало.

  5. Использование Firefox, я вернулся к методу в точке 1, который использует локальный файл арматуре и она работает. Я ненавижу это решение, но мне нужно идти вперед, чтобы это произошло.

Заключение

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

0

Это действительно сложно ответить, не зная хотя бы немного о характере вашего сервера или о том, как выглядит прибор. Является ли сервер простым файловым сервером, например node-http-server, или это указывает на ваше приложение? Правильно ли он обслуживает прибор? У вашего прибора есть ошибка? Я не могу сказать об этом отсюда.

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

Вместо этого я бы рекомендовал вручную добавить минимальный размер DOM, который вам нужен на странице, и удалить его после крючка. jasmine-fixture - это инструмент, который по существу делает это. Это заставит вас задуматься о том, какая часть DOM вам действительно нужна для написания теста, и внесет изменения DOM, которые вы делаете видимыми в самих тестах.

+0

Hello Eric. Я запускаю ** сервер Apache ** на ** windows 7 **. Я запускаю жасмин SpecRunner на ** Chrome **. Устройство просто содержит форму с несколькими кнопками, переключателями и текстовыми полями.В верхней части этой формы есть немного javascript, и именно поэтому я хотел бы иметь возможность внедрять тесты как способ избежать регрессии в случае, если я что-то модифицирую. Я не понимаю, почему вы советуете мне отказаться от светильников. Концепция достаточно проста, и если она может стать сложной, то это хорошая возможность учиться. –

0

В командной строке вы можете написать:

start chrome --allow-file-access-from-files "path_to_test/SpecRunner.html" 

Это решило для меня ... надежда может помочь еще некоторым людям.