Я пытаюсь написать модульный тест для пользовательского метода, который я написал для Highcharts.
Для моего теста мне нужно создать объект Highcharts.Point
для передачи в мой метод служебной программы.Вне теста объект Point
создается автоматически при визуализации диаграммы, но для моего теста мне нужно создать пользовательский объект с моими собственными параметрами.
Мой пользовательский объект Point с именем PointObjectExtended
является расширением Highcharts.Point , где dataLabel
- это размеры меток значений в точке, а shapeArgs
- это размеры.прямоугольника (в основном, индивидуальный график).
Это определения типов:
export interface PointObjectExtended extends Highcharts.PointObject {
dataLabel: DataLabel
shapeArgs: ShapeArguments
}
export interface DataLabel {
width: number
height: number
hide (): void
}
export interface ShapeArguments {
width: number
height: number
}
В моем тесте у меня есть что-то из следующего:
const point = {
shapeArgs: { width: 20, height: 20 },
dataLabel: { width: 20, height: 20, hide: jasmine.createSpy('hide spy') }
}
hide(point)
})
И это реализация метода:
function hide (point: PointObjectExtended) {
..
const shape = point.shapeArgs
const label = point.dataLabel
..
}
Ошибка, которую я получаю при попытке передать мой point
объект в hide()
, заключается в следующем:
Argument of type '{ shapeArgs: { width: number; height: number; }; dataLabel: { width: number; height: number; hide...' is not assignable to parameter of type 'PointObjectExtended'.
Property 'category' is missing in type '{ shapeArgs: { width: number; height: number; }; dataLabel: { width: number; height: number; hide...'.
Кажется, я хочу объявить остальную частьHighcharts.Point object
.Я не думаю, что это правильный подход, но я не уверен, что еще я могу сделать.
Итак, мой вопрос - как мне создать PointObjectExtended
, который я могу передать в мой метод модульного тестирования?
Одна альтернатива в том, что для моего метода я могу установить point
наберите any
, и он примет мой поддельный объект в тесте, но я не хочу использовать any
, очевидно.
function hide (point: any) {
..
const shape = point.shapeArgs
const label = point.dataLabel
..
}