Недавно я тестировал подобную функциональность, и сначала я решил не загружать изображения из API, поскольку вызов http более подвержен ошибкам, чем загрузка статического тестового изображения.
Для загрузки статических изображений сначала необходимонастройте карму (я полагаю, что у вас есть в настройках тестирования) для обслуживания изображения, изменив karma.conf.js
и добавив
files: [
{ pattern: './<PATH_TO_IMAGE_DIR>/**', watched: false, included:false, nocache:false, served:true }
]
, а затем отправив изображение в ваш тестовый пример, добавив /base
перед указанным каталогом изображенийвыше и, конечно, добавить сам файл изображения.Ваша спецификация должна быть асинхронной с использованием функции jasmine done
;что-то вроде этого:
it('should get dimensions', (done) => {
debugElement = fixture.debugElement.query(By.directive(ImageAnimationDirective));
directive = debugElement.injector.get(ImageAnimationDirective);
fixture.detectChanges()
// wait for a short time to make sure image is requested
setTimeout(() => {
expect(directive.dimensions.width).not.toEqual(0);
done();
}, 200);
});
, если вы решите не использовать статическое изображение, тогда, возможно, интервал должен быть немного больше.Я не проверял это, но оно должно работать