Как я могу научить Mocha обрабатывать файлы Typecript? - PullRequest
0 голосов
/ 08 июня 2019

Я пытаюсь настроить среду тестирования в контексте: мокко + синон + фермент + машинопись. Я уже сделал тест доступным с мокко + синон + фермент, но мне не удалось с поддержкой Typescript.

Вот мои файлы конфигурации внутри фрагмента:

/* Package.json */
"test": "mocha --watch --require babel-register.js --require ignore-styles --require setup.js  src/test/*.test.js",

/* setup.js */

const { JSDOM } = require('jsdom');

const jsdom = new JSDOM('<!doctype html><html><body></body></html>');
const { window } = jsdom;

function copyProps(src, target) {
  const props = Object.getOwnPropertyNames(src)
    .filter(prop => typeof target[prop] === 'undefined')
    .reduce((result, prop) => ({
      ...result,
      [prop]: Object.getOwnPropertyDescriptor(src, prop),
    }), {});
  Object.defineProperties(target, props);
}

global.window = window;
global.document = window.document;
global.window.requestAnimationFrame = (cb) => {
  return setTimeout(cb, 0);
};
global.window.cancelAnimationFrame = (cb) => {
  return setTimeout(cb, 0);
}
global.navigator = {
  userAgent: 'node.js',
};
copyProps(window, global);

/* babel.config */

module.exports = function (api) {
    //we will keep here all the supplementary babel options
    api.cache(false); 
    return {
        "env": {
            "test" : {
              "compact": false
            }
          }
    }
};

/* babel register */

require("@babel/polyfill");
require("@babel/register")({
    // Array of ignore conditions, either a regex or a function. (Optional)
    ignore: [
      // When a file path matches this regex then it is **not** compiled
      /node_modules\/(?!(ol)\/)/
  
      // The file's path is also passed to any ignore functions. It will
      // **not** be compiled if `true` is returned.
      //function(filepath) {
        //return filepath !== "/path/to/es6-file.js";
      //},
    ],

    presets : ["react-app"],
    plugins : [
        "@babel/plugin-transform-modules-commonjs", 
        "inline-react-svg",
    ],

    //root: __dirname,
  
    // Optional only regex - if any filenames **don't** match this regex then they
    // aren't compiled
    //only: /my_es6_folder/,
  
    // Setting this will remove the currently hooked extensions of `.es6`, `.es`, `.jsx`, `.mjs`
    // and .js so you'll have to add them back if you want them to be used again.
    extensions: [".es6", ".es", ".jsx", ".js", ".mjs"],
  
    // Setting this to false will disable the cache.
    cache: false,
  });

Я пытался добавить @ babel-typescript-preset, но после этого мой тестовый процесс не работает. Любой совет очень ценится.

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