将Jest测试结果导出到txt

时间:2017-10-20 07:33:32

标签: reactjs unit-testing jest

我可以使用'记者'来报告我的测试结果。 jest配置的方法,但它显示了控制台上的所有报告。我想要它创建像.txt

这样的文件

有可能吗?

这是我的开玩笑配置;

"jest": {
    "moduleNameMapper": {
      "^.+\\.css$": "identity-obj-proxy"
    },
    "verbose": true,
    "bail": true,
    "reporters": [
      "default",
      "<rootDir>/__test__/my-custom-reporter.js"
    ]
  }

和my-custom-reporter.js;

class MyCustomReporter {
  constructor(globalConfig, options) {
    this._globalConfig = globalConfig;
    this._options = options;
  }

  onRunComplete(contexts, results) {
    console.log('Custom reporter output:');
    console.log('GlobalConfig: ', contexts);
    console.log('Options: ', results);
  }

  onTestResult(test, testResult, aggregatedResult) {
    console.log('onTestResult:');
    console.log('test: ', test);
    console.log('testResult: ', testResult);
    console.log('aggregatedResult: ', aggregatedResult);
  }

  onRunStart(results, options) {
    console.log('onRunStart:');
    console.log('results: ', results);
    console.log('Options: ', options);
  }

  onTestStart(test) {
    console.log('onTestStart:');
    console.log('test: ', test);
  }

  getLastError() {
    if (this._shouldFail) {
      return new Error('my-custom-reporter.js reported an error');
    }
  }
}

module.exports = MyCustomReporter;

1 个答案:

答案 0 :(得分:0)

我找到了一种在文件中报告结果的完美方式。

我用&#34; 写文件-p &#34;模块将结果写入json文件。

所以我的班级变成了这样;

const writeFileP = require("write-file-p");

class MyCustomReporter {
  constructor(globalConfig, options) {
    this._globalConfig = globalConfig;
    this._options = options;
  }

  onRunComplete(contexts, results) {
    console.log('onRunComplete:');
    // Write a json syncronously
    writeFileP.sync(`${__dirname}/testResults/onRunComplete.json`, JSON.stringify(contexts)+"\n\n\n"+JSON.stringify(results));
  }

  onTestResult(test, testResult, aggregatedResult) {
    console.log('onTestResult:');
    // Write a json syncronously
    writeFileP.sync(`${__dirname}/testResults/onTestResult.json`, JSON.stringify(test)+"\n\n\n"+JSON.stringify(testResult)+"\n\n\n"+JSON.stringify(aggregatedResult));
  }

  onRunStart(results, options) {
    console.log('onRunStart:');
    // Write a json syncronously
    writeFileP.sync(`${__dirname}/testResults/onRunStart.json`, JSON.stringify(results)+"\n\n\n"+JSON.stringify(options));
  }

  onTestStart(test) {
    console.log('onTestStart:');
    // Write a json syncronously
    writeFileP.sync(`${__dirname}/testResults/onTestStart.json`, JSON.stringify(test));
  }

  getLastError() {
    if (this._shouldFail) {
      return new Error('my-custom-reporter.js reported an error');
    }
  }
}

module.exports = MyCustomReporter;

因此,所有报告都写入 json 文件。