Пожалуйста, предложите правильный способ для модульного тестирования обеих функций, используя шутку - PullRequest
0 голосов
/ 24 января 2020

Как провести модульное тестирование для максимального покрытия? Должен ли я добавить блок try catch, чтобы я мог проверять наличие сбоев?

Ответы [ 3 ]

1 голос
/ 24 января 2020

Мы можем видеть там 2 функции, каждая из которых имеет 1 условный оператор, поэтому для достижения максимального покрытия ветви вам потребуется как минимум 4 вызова.

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

Проверьте обе ваши функции для обоих случаев if - например, в getCurrentMonth когда a меньше 10, а когда a равно или больше 10. Это обеспечит вам 100% покрытие филиала.

1 голос
/ 24 января 2020

Во-первых, у вас небольшая ошибка в веселом getCurrentDay c, вам не нужно вычитать 1.

Здесь я написал все необходимые тесты, у вас есть вопросы? Самое главное, что вы должны предоставить постоянные даты для тестов. Не стати c даты могут меняться со временем. (например, вы не должны использовать new Date () без параметра)

function getCurrentMonth(d){
  a=d.getMonth()+1;
  return (a< 10) ? '0' + a.toString() : a.toString();
}

function getCurrentDay(d){
  b=d.getDate();
  return (b< 10) ? '0' + b.toString() : b.toString();
}

test('should add 0 before month if contains 1 number', () => {
  let d = new Date('2020-01-01T10:10:00Z')
  expect(getCurrentMonth(d)).toBe("01");
});

test('should return month', () => {
  let d = new Date('2020-10-01T10:10:00Z')
  expect(getCurrentMonth(d)).toBe("10");
});

test('should add 0 before day if contains 1 number', () => {
  let d = new Date('2020-01-02T10:10:00Z')
  expect(getCurrentDay(d)).toBe("02");
});

test('should return day', () => {
  let d = new Date('2020-10-21T10:10:00Z')
  expect(getCurrentDay(d)).toBe("21");
});
1 голос
/ 24 января 2020

Сосредоточиться на (a < 10) ? ... состоянии для написания модульных тестов. Не нужно добавлять блок try catch в функцию, пусть она выдает ошибку, когда d не является экземпляром Date. Вместо этого используйте expect().toThrow().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...