Используйте jest.run () или jest.runCLI () для запуска всех тестов или способов программного запуска jest - PullRequest
0 голосов
/ 13 июня 2018

Как использовать jest.run() или jest.runCLI() для программного запуска всех тестов?Что мне полагать в качестве аргумента?

Я пытался найти документацию по ним, но не смог.

И если вышеперечисленные функции не работают, что я должен вызывать, если я хочу запускать jest программно?

Ответы [ 3 ]

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

Вот пример из моего поста на Как программно запустить Jest в node.js (Jest JavaScript API) .

На этот раз с использованием TypeScript.

Установить зависимости

npm i -S jest-cli
npm i -D @types/jest-cli @types/jest

Позвонить

import {runCLI} from 'jest-cli';
import ProjectConfig = jest.ProjectConfig;


const projectRootPath = '/path/to/project/root';

// Add any Jest configuration options here
const jestConfig: ProjectConfig = {
 roots: ['./dist/tests'],
 testRegex: '\\.spec\\.js$'
};

// Run the Jest asynchronously
const result = await runCLI(jestConfig as any, [projectRootPath]);

// Analyze the results
// (see typings for result format)
if (result.results.success) {
  console.log(`Tests completed`);
} else {
  console.error(`Tests failed`);
}

Кроме того, что касается ответа @PeterDanis, я не уверен, что Jest отклонит обещание в случае неудачных тестов.По моему опыту, он восстановится с result.results.success === false.

0 голосов
/ 06 февраля 2019

Из того, что я испытал до сих пор, использование run() требует, чтобы вы определили статическую конфигурацию и затем передали аргументы Jest так же, как вы обычно используете Jest CLI *1003*.

Использование runCLI() позволяет вам динамически создавать конфигурацию и предоставлять ее Jest.

Я выбрал первую только потому, что хотел предоставить только несколько параметров CLI Jest для глобальной конфигурации:

import jest from "jest";
import { configPaths } from "../_paths";
import { Logger } from "../_utils";

process.env.BABEL_ENV = "test";
process.env.NODE_ENV = "test";

const defaultArgs = ["--config", configPaths.jestConfig];

const log = new Logger();

const resolveTestArgs = async args => {
  let resolvedArgs = [];

  if (args.file || args.f) {
    return [args.file || args.f, ...defaultArgs];
  }

  // updates the snapshots
  if (args.update || args.u) {
    resolvedArgs = [...resolvedArgs, "--updateSnapshot"];
  }

  // tests the coverage
  if (args.coverage || args.cov) {
    resolvedArgs = [...resolvedArgs, "--coverage"];
  }

  // runs the watcher
  if (args.watch || args.w) {
    resolvedArgs = [...resolvedArgs, "--watch"];
  }

  // ci arg to update default snapshot feature
  if (args.ci) {
    resolvedArgs = [...resolvedArgs, "--ci"];
  }

  // tests only tests that have changed
  if (args.changed || args.ch) {
    resolvedArgs = [...resolvedArgs, "--onlyChanged"];
  }

  return [...defaultArgs, ...resolvedArgs];
};

export const test = async cliArgs => {
  try {
    const jestArgs = await resolveTestArgs(cliArgs);
    jest.run(jestArgs);
  } catch (error) {
    log.error(error);
    process.exit(1);
  }
};
0 голосов
/ 14 июня 2018

Jest не должен запускаться программно.Возможно, это произойдет в будущем.

Попробуйте выполнить следующее:

const jest = require("jest");

const options = {
  projects: [__dirname],
  silent: true,
};

jest
  .runCLI(options, options.projects)
  .then((success) => {
    console.log(success);
  })
  .catch((failure) => {
    console.error(failure);
  });

При success при then обратном вызове будет передан объект, содержащий globalConfig и resultsключи.Посмотрите на них, может быть, это поможет вам.

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