Внешний модуль макета узла по умолчанию с использованием метода с использованием jest

Помните об этом, и вам не нужно было снова запутываться в преобразовании даты и времени.

String to datetime object = strptime

объект datetime для других форматов = strftime

Jun 1 2005 1:33PM

равно

%b %d %Y %I:%M%p

% b Месяц по сокращенному имени locale (июн)

% d День месяца как десятичное число с нулевым запасом (1)

% Y Год со столетием как десятичное число (2015)

% I Час (12-часовые часы) в виде десятичного числа с нулевым запасом (01)

% M Минута как десятичное число с нулевым запасом (33)

% p Значения локали либо AM или PM (PM)

, поэтому вам нужно strptime, т.е. преобразование string в

>>> dates = []
>>> dates.append('Jun 1 2005  1:33PM')
>>> dates.append('Aug 28 1999 12:00AM')
>>> from datetime import datetime
>>> for d in dates:
...     date = datetime.strptime(d, '%b %d %Y %I:%M%p')
...     print type(date)
...     print date
... 

Выход

<type 'datetime.datetime'>
2005-06-01 13:33:00
<type 'datetime.datetime'>
1999-08-28 00:00:00

Что если у вас есть другой формат дат, вы можете использовать panda или dateutil.parse

>>> import dateutil
>>> dates = []
>>> dates.append('12 1 2017')
>>> dates.append('1 1 2017')
>>> dates.append('1 12 2017')
>>> dates.append('June 1 2017 1:30:00AM')
>>> [parser.parse(x) for x in dates]

OutPut

[datetime.datetime(2017, 12, 1, 0, 0), datetime.datetime(2017, 1, 1, 0, 0), datetime.datetime(2017, 1, 12, 0, 0), datetime.datetime(2017, 6, 1, 1, 30)]
2
задан BlackHoleGalaxy 31 March 2019 в 01:43
поделиться

1 ответ

У вас есть несколько вариантов:

<час>

Вы можете смоделировать ora так:

jest.mock('ora', () => {
  const start = jest.fn();
  const result = { start };
  return jest.fn(() => result);
});

... и затем позвонить ora, чтобы получить объект, который он возвращает (поскольку он всегда возвращает один и тот же объект) и использует этот объект для доступа к start:

it('should call ora start', () => {
  const result = ora();
  expect(result.start).toHaveBeenCalled();  // Success!
});

Или, если хотите, вы можете присоединить макет start как свойство на ora макет как простой способ получить к нему доступ во время ваших тестов, например:

const ora = require('ora');

jest.mock('ora', () => {
  const start = jest.fn();
  const result = { start };
  const ora = jest.fn(() => result);
  ora.start = start;  // attach the start mock to ora
  return ora;
});

const startSpinner = require('./startSpinner');

describe('startSpinner', () => {
  beforeEach(() => {
    startSpinner({});
  });

  describe('ora', () => {
    it('should call ora', () => {
      expect(ora).toHaveBeenCalled();  // Success!
    });

    it('should call ora start', () => {
      expect(ora.start).toHaveBeenCalled();  // Success!
    });
  });
});
0
ответ дан brian-lives-outdoors 31 March 2019 в 01:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: