Я новичок в Angular и пытаюсь протестировать сервис Angular 6, который использует handlebars.js для создания HTML-шаблонов на стороне клиента на основе входных данных JSON / data.
Служба выдает желаемый результат в процессе разработки, но я не могу создать тест, подтверждающий, что служба правильно компилирует html. У меня есть базовые шаблоны (в виде строк JavaScript), импортированные непосредственно в службу, но когда я пытаюсь запустить метод компиляции в файле .spec, я получаю Error: You must pass a string or Handlebars AST to Handlebars.compile. You passed undefined
, что означает, что строковые переменные базового шаблона не создаются в службе внутри файл .spec.
PdfReportService.service.ts
файл
import { Injectable } from '@angular/core';
import * as Handlebars from 'handlebars/dist/handlebars.min.js';
// base template
import base_html from './root_template/html';
// form templates
import form_html from './form_template/form.html';
import form_css from './form_template/form.css';
@Injectable({
providedIn: 'root'
})
export class PdfReportService {
...
...
public compileform(json: object, context?: any) {
Handlebars.registerPartial({ hbs_css_template: form_css });
Handlebars.registerPartial({ hbs_form_body: form_html });
return Handlebars.compile(base_html)({ json, context });
}
}
PdfReportService.service.spec.ts
файл
import { TestBed, inject } from '@angular/core/testing';
import { PdfReportService } from './pdf-reports.service';
// import test data
import {
formInputJson,
formInputContext,
formCompiledHTML
} from './pdf-reports.service.spec.data';
fdescribe('PdfReportService', () => {
beforeEach(() => {
TestBed.configureTestingModule({
providers: [PdfReportService]
});
});
it('should compile the correct html from form input data', inject(
[PdfReportService],
(service: PdfReportService) => {
const result = service.compileform(formInputJson, formInputContext);
expect(result).toEqual(formCompiledHTML);
}
));
});
Я пытался изменить сервис и несколько различных методов прохождения переменных через тест, но они всегда остаются неопределенными. Любая помощь будет оценена!