В Karma\Jasmine есть варианы для запуска выборочных тестов - fit, fdescribe. В этом посте - разберусь, какие есть варианты для этого - в Jest.

Использование .only для запуска только одного теста

В данном случае - запустится только один тест - первый:

describe('my suite', () => {
  test.only('my only true test', () => {
    expect(1 + 1).toEqual(2);
  });
  // этот тест --> не запустится
  test('my only true test', () => {
    expect(1 + 1).toEqual(1);
  });
});

В Jest для test.only есть алиас по аналогии с Jasmine - fit; то есть по идее - можно написать так:

describe('my suite', () => {
  fit('my only true test', () => {
    expect(1 + 1).toEqual(2);
  });
  // этот тест --> не запустится
  test('my only true test', () => {
    expect(1 + 1).toEqual(1);
  });
});

Ссылка из официальной документации - Test.Only

Использование .only для запуска нескольких тестов

В данном случае - запустится несколько тестов - первый и второй; третий - будет пропущен:

describe('my suite', () => {
  test.only('one of my .only test', () => {
    expect(1 + 1).toEqual(2);
  });
  test.only('other of my .only test', () => {
    expect(1 + 2).toEqual(3);
  });
  // этот тест --> не запустится
  test('my only true test', () => {
    expect(1 + 1).toEqual(1);
  });
});

В Jest для test.only есть алиас по аналогии с Jasmine - fit; то есть по идее - можно написать так:

describe('my suite', () => {
  fit('one of my .only test', () => {
    expect(1 + 1).toEqual(2);
  });
  fit('other of my .only test', () => {
    expect(1 + 2).toEqual(3);
  });
  // этот тест --> не запустится
  test('my only true test', () => {
    expect(1 + 1).toEqual(1);
  });
});

Ссылка из официальной документации - Test.Only

Использование .only для запуска набора тестов

Для выбора набора тестов для запуска - также можно использовать .only. В данном случае - запустятся тесты только из первого набора (‘first suite’), для которого установлено describe.only; второй набор тестов (‘second suite’) - будет пропущен:

describe.only('first suite', () => {
  test('one of my .only test', () => {
    expect(1 + 1).toEqual(2);
  });
});
// эти тесты --> не запустятся
describe('second suite', () => {
  test('my only true test', () => {
    expect(1 + 1).toEqual(1);
  });
});

У .only есть - алиас fdescribe; то есть, в Jest можно (по идее) написать по аналогии с Jasmine:

fdescribe('first suite', () => {
  test('one of my .only test', () => {
    expect(1 + 1).toEqual(2);
  });
});
// эти тесты --> не запустятся
describe('second suite', () => {
  test('my only true test', () => {
    expect(1 + 1).toEqual(1);
  });
});

Ссылка из официальной документации - Describe.Only

Использование .only для запуска нескольких наборов тестов

Аналогично предыдущему вварианту, можно указать .only для запуска нескольких наборов тестов; в данном случае - будут запущены только два первых набора тестов:

describe.only('my suite', () => {
  test('one of my .only test', () => {
    expect(1 + 1).toEqual(2);
  });
});
describe.only('other suite', () => {
  test('other of my .only test', () => {
    expect(1 + 2).toEqual(3);
  });
});
// эти тесты --> не запустятся
describe('skipped other suite', () => {
  test('my only true test', () => {
    expect(1 + 1).toEqual(1);
  });
});

У .only есть - алиас fdescribe; то есть, в Jest можно (по идее) написать по аналогии с Jasmine:

fdescribe('my suite', () => {
  test('one of my .only test', () => {
    expect(1 + 1).toEqual(2);
  });
});
fdescribe('other suite', () => {
  test('other of my .only test', () => {
    expect(1 + 2).toEqual(3);
  });
});
// эти тесты --> не запустятся
describe('skipped other suite', () => {
  test('my only true test', () => {
    expect(1 + 1).toEqual(1);
  });
});

Ссылка из официальной документации - Describe.Only


Сочетания клавиш для быстрой работы в Macos

Ниже представлен неполный список сочетания клавиш в Macos, позволяющие быстро вести разработку в этой ОС. В основном сочетания относятся к IDE Webstorm, но не только к ней - ко всему спектру процесса разработки.

  • Cmd + W - закрыть активную вкладку редактора
  • Cmd + 0 - открыть\закрыть панель коммитов
  • Cmd + 1 - открыть\закрыть панель проекта
  • Cmd + 9 - открыть\закрыть панель Git
  • Cmd + ArrowLeft - переместить курсор влево до начала строки
  • Cmd + ArrowRight - переместить курсор влево до окончания строки
  • Cmd + B - перейти в объявление или использование
  • Cmd + / - строчный комментарий
  • Cmd + Shift + / - блочный комментарий
  • Cmd + Backspace - удалить активную строку
  • Cmd + L - переход на указанный номер строки

  • Cmd + [ - назад по истории перемещений
  • Cmd + ] - вперед по истории перемещений
  • Shift + Cmd + ] - перемещение вправо по открытым вкладкам редактора
  • Shift + Cmd + [ - перемещение влево по открытым вкладкам редактора
  • Cmd + Home - переход в начало файла
  • Cmd + End - переход в конец файла

  • Shift + Cmd + ArrowLeft - выделить всю строку от курсора влево
  • Shift + Cmd + ArrowRight - выделить всю строку от курсора вправо
  • Shift + Option + ArrowUp - переместить активную строку вверх
  • Shift + Option + ArrowDown - переместить активную строку вниз

  • Option + Cmd + I - открыть\закрыть Devepoler Tools (браузера)
  • Option + ArrowUp - выделить все слово, на котором стоит курсор
  • Option + Enter - вручную импортировать зависимость
  • Option + Cmd + Z - откатить изменения

Ссылки

Jest

Соответствия matcher’ов в Jasmine и Jest

  • and.callThrough() –> mockImplementation()
  • and.callFake() –> mockImplementation()
  • and.returnValue() –> mockReturnValue()
  • and.spyOnProperty() –> spyOn()
  • and.toHaveBeenCalledOnceWith() –> toHaveBeenCalledTimes(1)
  • spyOn(…).and.callFake(() => {}) –> jest.spyOn(…).mockImplementation(() => {})
  • jasmine.createSpy(‘name’) –> jest.fn()
  • toBeTrue –> toBe(true)
  • toBeFalse –> toBe(false)

toHaveBeenCalled() - это алиас для toBeCalled()

Jasmine createSpyObj в Jest

В Jasmine объект шпиона создается, используя функцию createSpyObj и передавая в него параметры имени класса и массива методов:

const serviceMock = createSpyObj('service', ['method_1', 'method_2', 'method_3', 'method_4', 'method_5']);

В Jest просто создается объект с ожидаемыми свойствами, а функция jest.fn() создает методы-шпионы:

const serviceMock = {
    method_1: jest.fn(),
    method_2: jest.fn(),
    method_3: jest.fn(),
    method_4: jest.fn(),
    method_5: jest.fn()
};

Ссылки

У этой клавиатуры есть три кнопки Easy-Switch Keys - удобная штука для подключения клавиатуры по Bluetooth к разным устройствам (компьютерам):

Logitech Easy-Switch Keys

Но иногда бывает такая ситуация, когда нужно отключить клавиатуру от уже подключенных устройств. Операция несложная, но - нужно некоторое время на поиск этой информации - решил сохранить у себя.

Как сбросить настройки Logitech MX

  • в Bluetooth-настройках всех устройств - отключить (unpair) клавиатуру
  • на клавиатуре последовательно нажать комбинацию клавиш - ESC + O (буква, не цифра!), затем снова ESC + O (буква, не цифра!), потом ESC + B
  • подсветка клавиатуры помигает несколько секунд - ждем, пока перестанет мигать
  • выключаем и снова включаем клавиатуру (hard переключатель)
  • в результате все устройства, которые были подключены (pair) к клавиатуре по фиче Easy-Switch Keys, будут удалены из памяти самой клавиатуры

Пример красивой функции trackBy для Angular. Функция понравилась своей лаконичностью:

public trackByNumber = (_: number, order: ILandingPageOrder): string => order.orderNumber;