Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Помогите решить задачу (https://javascript.ru/forum/events/83774-pomogite-reshit-zadachu.html)

TomWalbridge 06.03.2022 15:42

Помогите решить задачу
 
Добрый день! Кто может помочь решить 2 задачи, самому не понять, используя try catch
1. Функция calculateDiscount должна выбрасывать ошибку, если её аргументы не числа.
export function calculateDiscount(price, percent) {
  return (price / 100) * percent;
}

2. Функция getMarketingPrice не должна выбрасывать ошибку, если в структуре товара нет информации про цены.
export function getMarketingPrice(product) {
    const productObject = JSON.parse(product);

    return productObject.prices.marketingPrice;
}

код автотестов
import { calculateDiscount, getMarketingPrice, getAvatarUrl } from './index';

test('calculateDiscount', () => {
  expect(calculateDiscount(1000, 10)).toBe(100);
  expect(() => {
    calculateDiscount('1000', '10');
  }).toThrow();
  expect(() => {
    calculateDiscount('1000', '10');
  }).toThrowError(TypeError);
});

test('getMarketingPrice', () => {
  expect(() => {
    getMarketingPrice('{ "name": "Product" }');
  }).not.toThrow();
  expect(getMarketingPrice('{ "name": "Product" }')).toBeNull();
  expect(getMarketingPrice('{ "name": "Product", "prices": { "marketingPrice": 1200 } }')).toBe(1200);
});

Заранее всем благодарен за помощь!!!

Nexus 06.03.2022 19:17

Проверить тип переменной можно с помощью оператора typeof.
Проверить наличие свойства в объекте можно с помощью оператора in (перед проверкой убедитесь, что имеете именно объект, а не null или undefined).
Сравнить значения можно с помощью оператора проверки на равенство.
Задать условия можно с помощью if...else.
Выбросить исключения можно с помощью throw.
В качестве исключения вы можете выбросить экземпляр класса Error.

Не благодарите.


Часовой пояс GMT +3, время: 15:23.