Как вы обслуживаете svg и приспособления с Karma Runner (aka Testacular)

Я пробовал последние два часа, чтобы заставить бегуна Karma служить файлу svg и html-устройству, но пока не повезло.

После второго ответа на эту тему: Ошибка при интеграции html с testacularjs Я пытался использовать served, чтобы указать, что мои приборы и svg файл должны быть распределенным сервером, но я все еще получаю "НЕ НАЙДЕНО"

files = [
  JASMINE,
  JASMINE_ADAPTER,
  REQUIRE,
  REQUIRE_ADAPTER,

  // put all components in requirejs 'paths' config here (included: false)
  { pattern: 'preview/public/components/**/*.js', included: false },
  { pattern: 'preview/public/js/**/*.js', included: false },

  // assets
  { pattern: 'preview/public/img/svg/*.svg', included: false, served: true },

  // helpers & fixtures for jasmine-jquery
  { pattern: 'test/libs/**/*.js', included: true },
  { pattern: 'test/fixtures/**/*.html', included: false, served: true },

  // all src and test modules (included: false)
  { pattern: 'test/specs/**/*.spec.js', included: false },

  // test main require module last
  'test/test-main.js'
];

Я устанавливаю jasmine.getFixtures().fixturesPath в /fixtures, и я вижу, что он использует правильный путь, но я все еще получаю...

GET http://localhost:9876/img/svg/directional-pad-gradients.svg 404 (Not Found) GET http://localhost:9876/fixtures/directional-pad.html 404 (Not Found)

Если у кого-нибудь есть пример загрузки светильников и/или svg с бегуном Karma, я бы полюбил действительно. Спасибо!

Ответ 1

Отвечая на мой собственный вопрос здесь...

Я пытался загрузить мои светильники в http://localhost:9876/fixtures/directional-pad.html

Вместо этого я должен был попытаться обратиться к ним в http://localhost:9876/base/test/fixtures/directional-pad.html

Karma хранит все в соответствии с маршрутом base/, поэтому любые статические маршруты файлов, которые вы добавите, должны начинаться с этого.

Ответ 2

Один из способов сделать это - настроить прокси-сервер.

Хорошим примером тестовой системы с использованием прокси-сервера является https://github.com/yearofmoo-articles/AngularJS-Testing-Article

который является примером из Year of Moo, посвященного большому тестированию. http://www.yearofmoo.com/2013/01/full-spectrum-testing-with-angularjs-and-testacular.html

Вы устанавливаете прокси-сервер в файле конфигурации кармы

proxies = {
  '/': 'http://localhost:8100/'
};

Затем вам нужно настроить сервер на 8100

это можно сделать с помощью http-server

npm установить http-server --save-dev

затем создайте два файла

./server.sh

nf --procfile ./config/Procfile.server start

./конфигурации/Procfile.server

web_server: ./node_modules/http-server/bin/http-server -p 8100 preview/public

Затем вам нужно запустить сервер

./server.sh

Затем, когда вы запускаете тесты, прокси-сервер будет обслуживать ваши файлы.