Я использую Mocha вместе с тестовым бегуном Karma и Expect Майкла Джексона для утверждений: Нет, не певец!

Это небольшой список функций, которые помогают мне в повседневных задачах.

Во-первых, посмотрите пример моей настройки для запуска тестов.

Теперь к Mocha!

По мере роста размера и функциональности вашего приложения растет и ваш набор тестов, или, скорее, я должен сказать: По мере роста охвата вашего набора тестов растет и функциональность ваших приложений.

В конце концов, вы обнаружите, что у вас есть набор, содержащий большое количество тестов.

.только

При выполнении тестов можно значительно сэкономить время, если я запускаю подмножество тестов вместо всего набора тестов. Я нашел опцию .only очень полезной для этого.

Учитывать

describe.only('cocktailActions', () => {

  describe('sync', () => {

    it('should generate addCocktail Action', () => {

      //mock a cocktail
      const cocktail  =  {
        name: 'Tea',
        contents: [
          {id: 23, amount: '2 spoons'},
          {id: 56, amount: '1 pinch'}
        ]
      };

      //mock the action
      const action =  {
        type: 'ADD_COCKTAIL',
        cocktail
      };

      //call the actions
      const res =  actions.addCocktail(cocktail);

      expect(res).toEqual(action);
    });
  });
});

Здесь вы можете видеть, что в наборе тестов, который насчитывает сотни, как в случае с моим примером, я бы запускал только это подмножество тестов. Это и быстрее по времени, и помогает мне оставаться сосредоточенным, так как я могу выполнять итерации быстрее!

пустые тесты

В Mocha вы описываете тестовые случаи с помощью ключевого слова it, как вы можете видеть в приведенном выше примере, но вы можете просто конкретизировать свои тесты, написав пустые случаи, они будут пропущены во время тестовых прогонов.

Попробуйте добавить это к моему примеру выше

it('should generate deleteCocktail action', () => {})

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

Вы также можете использовать функции afterEach и beforeEach для выполнения некоторых настроек перед некоторыми тестами. Потерпите меня, так как эта часть может быть немного догматичной, ниже приведен набор для запуска некоторых асинхронных тестов.

afterEach((done) => {
    firebaseRef.remove().then(() => done());
  });

Как вы можете видеть здесь, я очищаю свою тестовую базу данных, которую использую для тестирования, после запуска каждого теста, поэтому все они выполняются изолированно, без данных или контекстов друг друга.

Как вы тестируете?

Посмотрите еще больше опций Mocha

Запросы? Предложения? пиар?

Назад к коду! 😝

Первоначально опубликовано на https://zacck.github.io.