Тестирование при возникновении ошибки в экземпляре Javascript класса с отсутствующими параметрами - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь использовать Jest для модульного тестирования и не нашел, как проверить, выдает ли класс ошибку при отсутствии параметров.

Это ScheduleJob. js

class ScheduleJob {
  constructor({ id, description, maxConclusionDate, estimateTime }) {
    if (id === undefined) {
      throw new Error("id is undefined");
    }
    if (description === undefined) {
      throw new Error("description is undefined");
    }
    if (maxConclusionDate === undefined) {
      throw new Error("maxConclusionDate is undefined");
    }
    if (estimateTime === undefined) {
      throw new Error("estimateTime is undefined");
    }
    this.id = id;
    this.description = description;
    this.maxConclusionDate = maxConclusionDate;
    this.estimateTime = estimateTime;
  }
}

module.exports = ScheduleJob;

Это ScheduleJob.test. js

const ScheduleJob = require("./ScheduleJob.js");

describe("./ScheduleJob parameters validation", () => {
  it("creates a instance with all parameters", () => {
    const mockJob = {
      id: 1,
      description: "Importação de arquivos de fundos",
      maxConclusionDate: "2019-11-10 12:00:00",
      estimateTime: "2 horas",
    };
    const mockInstance = new ScheduleJob(mockJob);
    expect(mockInstance.id).toBe(1);
    expect(mockInstance.description).toBe("Importação de arquivos de fundos");
    expect(mockInstance.maxConclusionDate).toBe("2019-11-10 12:00:00");
    expect(mockInstance.estimateTime).toBe("2 horas");
  });
  it("Throws error when missing params", () => {
    const mockJob = {
      description: "Importação de arquivos de fundos",
      maxConclusionDate: "2019-11-10 12:00:00",
      estimateTime: "2 horas",
    };
    expect(new ScheduleJob(mockJob)).toThrow(Error);
  });
});

Возможно, мне нужно издеваться над этим классом и создать объект с ошибками, я видел несколько сообщений с этим ответом, но ошибки в эти случаи выбрасываются функциями, а не самим конструктором

1 Ответ

0 голосов
/ 19 июня 2020

.toThrow выполняет функцию, переданную в expect, и проверяет, выдает ли она ошибку.

Примечание: вы должны заключить код в функцию, иначе ошибка не будет обнаружена и утверждение не будет выполнено.

Итак, вы должны заключить * в функции, подобной этой:

expect(() => new ScheduleJob(mockJob)).toThrow(Error);

Тогда тест будет пройден. Результат модульного теста:

 PASS  stackoverflow/62459652/scheduleJob.test.js (10.478s)
  ./ScheduleJob parameters validation
    ✓ creates a instance with all parameters (3ms)
    ✓ Throws error when missing params (4ms)

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