0

我将 grunt connect ( "grunt-contrib-connect": "0.11.2") 与 grunt jasmine ( "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');
});
4

1 回答 1

0

GruntJS 框架包括lodash 模板,您可以在配置和任务中使用它来在运行时注入值。文档可能有点混乱;为了解决您的问题,我们将在字符串中添加一个 lodash 模板标签,以便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 会在执行任务之前处理 lodash 模板标签。

于 2020-03-11T00:37:34.823 回答