如何保持我的结果不被Mocha Junit覆盖

时间:2018-01-25 21:51:25

标签: javascript json reactjs mocha

我使用赛普拉斯与Mocha Junit对Chrome中的React进行e2e测试。默认行为是每次运行我的测试时它都有一个输出结果,并且每次都会覆盖该文件。我想让它像日志一样保存这些文件。

配置位于JSON文件中,如下所示:

}
  "projectId": "XXXXXX",
  "reporter": "junit",
  "reporterOptions": {
    "mochaFile": "./cypress/results/my-test-output.xml",
    "toConsole": true
  }
}

我想做一些像

这样的事情
var date = new Date();
"mochaFile": "./cypress/results/my-test-output${date}.xml",

显然这不是有效的JSON。我怎样才能使它每次都能生成独特的东西?

2 个答案:

答案 0 :(得分:0)

来自文档,

  

结果XML文件名可以包含[hash]

另外,如果您检查junit记者source,您可以看到它是如何做到的:

...
this.writeXmlToDisk(xml, this._options.mochaFile);
...

MochaJUnitReporter.prototype.writeXmlToDisk = function(xml, filePath){
  if (filePath) {
    if (filePath.indexOf('[hash]') !== -1) {
      filePath = filePath.replace('[hash]', md5(xml));
    } ...

所以,你可以拥有:

"mochaFile": "./cypress/results/my-test-output[hash].xml"

答案 1 :(得分:0)

这里没什么可做的。正如您所看到的,您需要做的就是将JSON包装在反引号中。除了我建议您使用Date.now()而不是new Date()

let date = Date.now();
let json = `{
  "projectId": "XXXXXX",
  "reporter": "junit",
  "reporterOptions": {
    "mochaFile": "./cypress/results/my-test-output-${date}.xml",
    "toConsole": true
  }
}`

let parsedJson = JSON.parse(json)
console.log(parsedJson.reporterOptions.mochaFile)

与哈希相比,这甚至具有历史化的优势。