Как включить HTML-файлы в тестирование внешнего интерфейса кармы с помощью жасмина - PullRequest
0 голосов
/ 27 января 2019

Я пытаюсь создать внешний браузер без заголовка для тестирования через karma / jasmine, но кажется, что HTML-файлы не были загружены, только файлы JS. Всякий раз, когда я включаю файл JS (среди files: [ ]), он выполняется правильно, например, console.log записывается в терминал. Однако когда я включаю какие-либо HTML-файлы, это ничего не делает; вызываемый в нем скрипт не выполняется, и я также не могу получить доступ к его элементам.

karma.conf.js:

module.exports = function(config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine'],
    files: [
      '../js/jquery-2.1.3.min.js',
      'index.html',
      'test.js'
    ],
    exclude: [
    ],
    preprocessors: {
    },
    reporters: ['progress'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: false,
    browsers: ['PhantomJS'],
    singleRun: true,
    concurrency: Infinity
  })
}

index.html:

<!DOCTYPE html>
<html>
  <head>
      <script>console.log("Script in HTML")</script>
  </head>
  <body>
          <p id = "my_id1">
              Text in my_id1.
          </p>
  </body>
</html>

test.js:

describe("A suite", function() {
  console.log( $("#my_id1").text() ); // currently outputs empty string
  it("contains spec with an expectation", function() {
    expect(true).toBe(true);
  });
});

Итак, вопрос: как я могу включить файлы HTML, чтобы они правильно загружались в браузер (чтобы я мог манипулировать ими через код JS)?

1 Ответ

0 голосов
/ 27 января 2019

У меня теперь есть рабочее решение.

К karma.conf.js я добавляю автоматическое преобразование HTML в JS:

preprocessors: {
  '**/*.html': ['html2js']
},

и

html2JsPreprocessor: {
  // strip this from the file path
  stripPrefix: 'public/',

  // prepend this to the file path
  prependPrefix: 'served/',

  // or define a custom transform function
  processPath: function(filePath) {
    // Drop the file extension
    return filePath.replace(/\.html$/, '');
  }
}

И в test.js я добавляю преобразованный файл HTML-JS в тело страницы:

$("body").append(window.__html__.index);

Это правильно загружает index.html.

Однако по какой-то причине это не работает, когда я укажите относительный путь к файлу, например ::1014*

files: [
  '../js/jquery-2.1.3.min.js',
  '../index.html', // instead of just 'index.html'
  'test.js'
],

И я до сих пор не знаю, почему простая загрузка HTML не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...