#angular #typescript #testing #jasmine #karma-runner
#angular #typescript #тестирование #jasmine #карма-раннер
Вопрос:
Я пытаюсь протестировать службу перехватчика, подобную этой:
import { Injectable } from '@angular/core';
import { HttpInterceptor } from '@angular/common/http';
@Injectable()
export class ChacheCtrlInterceptor implements HttpInterceptor {
constructor() { }
intercept(req, next) {
let httpCall = req.clone({
headers: req.headers.set('Pragma', 'no-cache')
.set('Cache-Control', 'no-cache')
});
return next.handle(httpCall);
}
}
Это, просто добавьте эти 2 заголовка ко всем Http-вызовам, которые я выполняю в приложении.
Я знаю, что для теста, если перехватчик добавляет заголовки, я должен сделать что-то вроде этого:
it('should add Pragma header to request', () => {
const req = new Http();
expect(req.request.headers.has('Pragma')).toBeTruthy();
expect(req.request.headers.get('Pragma')).toEqual('no-cache');
});
it('should add Cache-Control header to request', () => {
const req = new Http();
expect(req.request.headers.has('Cache-Control')).toBeTruthy();
expect(req.request.headers.get('Cache-Control')).toEqual('no-cache');
Есть идеи, как я могу охватить этот код, я новичок в тестировании karma: S
Комментарии:
1.
ng test --code-coverage
. Но сначала вы должны написать тест, который компилируется и который фактически вызывает метод, который вы хотите протестировать.2. Это interceptor…it будет вызван. Вам действительно не следует давать советы.
3. @TheBatman нет. Если вы никогда не отправляете никаких запросов, перехватчик никогда не будет вызван. Опубликованный код никогда не отправляет никаких запросов, поэтому перехватчик никогда не будет вызван. Вам действительно следует подумать, прежде чем публиковать ерунду.
4. Зачем мне это делать, когда вы сделали на этом целую карьеру?