Как связать порт от Grunt Connect до Grunt Жасмин - PullRequest
0 голосов
/ 09 марта 2020

Я использую соединение grunt ("grunt-contrib-connect": "0.11.2") в сочетании с жасмином grunt ("grunt-contrib-jasmine": "^1.1.0"). Конфигурация подключения ранее жестко кодировала номер порта, и конфигурация jasmine также была настроена на использование того же номера порта в параметре конфигурации host.

Теперь я хочу включить параметр useAvailablePort в подключении, чтобы решить проблему с параллельными сборками, использующими один и тот же порт. Однако я изо всех сил пытаюсь понять, как правильно сообщить номер порта от подключения к Жасмин?

Вот соответствующие разделы моего блока конфигурации grunt init:

connect: {
  test: {
    options: {
      keepalive: false,
      hostname: 'localhost',
      port: 1234,
      base: ['.']
    }
  }
}
jasmine: {
  js: {
    src: ...,
    options: {
      keepRunner: true,
      summary: true,
      host: 'http://localhost:1234/',
      specs: 'src/test/js/**/*Spec.js',
      vendor: ...
    }
  }
}

У меня есть создал тестовое задание grunt, используя:

grunt.registerTask('test', ['connect', 'jasmine:js']);

Итак, каков наилучший способ захвата порта из connect и установки хоста в jasmine:js?

Я был пытаясь изменить тестовое задание следующим образом, но без радости (также не уверен, что это будет правильным способом):

grunt.registerTask('test', 'Run jasmine unit tests', function () {
  grunt.event.once('connect.test.listening', function(host, port) {
    var jasmineHost = 'http://' + host + ':' + port;
    grunt.log.writeln('Running jasmine tests from: ' + jasmineHost );
    grunt.config.set('jasmine:js:options:host', jasmineHost );
    grunt.task.run('jasmine:js');
  });
  grunt.task.run('connect:test');
});

1 Ответ

0 голосов
/ 11 марта 2020

Платформа Grunt JS включает в себя loda sh шаблоны , которые вы можете использовать в своих конфигурациях и задачах для ввода значений во время выполнения. Документация может быть немного запутанной; чтобы решить вашу проблему, мы добавим тег loda sh в строку для jasmine.js.options.host и будем ссылаться на другое значение конфигурации, используя обозначение json:

jasmine: {
  js: {
    src: ...,
    options: {
      keepRunner: true,
      summary: true,
      host: 'http://localhost:<%= connect.test.port %>/',
      specs: 'src/test/js/**/*Spec.js',
      vendor: ...
    }
  }
}

Во время выполнения grunt будет обрабатывать loda sh шаблон тега перед выполнением задачи.

...