Как смоделировать свойство (path.sep) в Jest - PullRequest
1 голос
/ 29 апреля 2019

Мне нужно проверить, работает ли модуль как под Windows, так и под Linux.Модуль разрешает путь и, в зависимости от ОС, содержит прямой или обратный слеш.Он использует path.sep, чтобы определить, какой слеш использовать.В моем тестовом примере я хочу протестировать обе ОС.Моя проблема в том, что я не могу понять, как изменить значение path.sep, поскольку это свойство, а не функция.

Я что-то упустил?Как я могу издеваться над свойством path.sep?Я надеюсь, что кто-то может пролить свет на это.

1 Ответ

1 голос
/ 29 апреля 2019

Вот простой рабочий пример:

code.js

const path = require('path');

export const func = () => path.sep === '/' ? 'foo' : 'bar';

code.test.js

const path = require('path');
import { func } from './code';

test('func', () => {
  path.sep = '/';
  expect(func()).toBe('foo');  // Success!

  path.sep = '\\';
  expect(func()).toBe('bar');  // Success!
});

Похоже, это также работает, если вы используете

import path from 'path';

... но это не работает (по крайней мере, в моей среде) с

import * as path from 'path';

(Поскольку path в настоящее время не является модулем ES6, транспортер должен выполнить некоторую работу, чтобы заставить работать синтаксис импорта ES6, и import * as path from 'path'; должен быть перенесен таким образом, который нарушает описанный выше подход.)

...