Проверьте равенство массива с помощью Jest - PullRequest
0 голосов
/ 13 марта 2020

У меня есть метод внутри файла test.ts:

public async listComponentsDiffer(lastTag: string, workDir: string): Promise<any[]> 

Этот метод возвращает мне массив, подобный этому:

[{ components: "toto", newVersion: "2", oldVersion: "1" }]

Я пытаюсь использовать Jest и я делаю это для проверки этого метода:

test("correct array form", () => {
    // Given
    const lastag = "";
    const workDir = ".";

    // When
    const result = ComponentsService.listComponentsDiffer(lastag, workDir);

    // Then
    const expected = [{ components: "toto", newVersion: "2", oldVersion: "1" }];
    expect(result).toBe(expected);
});

Но у меня есть эта ошибка:

TypeError: test_1.test.listComponentsDiffer is not a function Jest

Как я могу сделать свой тест?

1 Ответ

0 голосов
/ 16 марта 2020
  1. Этот метод является методом экземпляра, а не методом класса. Требуется вызвать из экземпляра класса.

  2. Этот метод использует синтаксис async/await, вам также необходимо добавить async/await в ваш тестовый пример.

  3. Вместо использования .toBe следует использовать .toEqual.

. Использовать .toEqual для рекурсивного сравнения всех свойств экземпляров объектов (также известных как «глубокое» равенство)

Например:

test.ts:

export class ComponentsService {
  public async listComponentsDiffer(lastTag: string, workDir: string): Promise<any[]> {
    return [{ components: 'toto', newVersion: '2', oldVersion: '1' }];
  }
}

test.test.ts:

import { ComponentsService } from './test';

describe('60667611', () => {
  test('correct array form', async () => {
    const lastag = '';
    const workDir = '.';
    const instance = new ComponentsService();

    const result = await instance.listComponentsDiffer(lastag, workDir);

    const expected = [{ components: 'toto', newVersion: '2', oldVersion: '1' }];
    expect(result).toEqual(expected);
  });
});

модульный тест результаты:

 PASS  stackoverflow/60667611/test.test.ts (7.968s)
  60667611
    ✓ correct array form (6ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        9.014s
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...