waitOne () требует, чтобы строка URL соответствовала запросу, который тестируемый код делает через HttpClient. Но мне нужны отдельные тесты для проверки URL-адреса запроса и проверки данных результата. Я хочу, чтобы один тест подтвердил URL запроса - игнорируя данные результата - который я могу написать. И я хочу, чтобы другой тест проверил данные результатов - независимо от URL-адреса - которые я не могу написать, так как для ожидаемого результата требуется, чтобы параметр URL соответствовал.
Я искал способ сказать, что ожидают, что URL игнорируется или соответствует любому URL, но ничего не нашел. Я пытался передать '*', но это не сработало.
Есть ли способ заставить HttpTestingController соответствовать любому URL?
import { TestBed } from '@angular/core/testing';
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
import { OperationsLogService } from './operations-log.service';
import { Severity } from './severity.enum';
describe('OperationsLogService', () => {
let service: OperationsLogService;
let httpMock: HttpTestingController;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
HttpClientTestingModule
],
providers: [
OperationsLogService
]
});
service = TestBed.get(OperationsLogService);
httpMock = TestBed.get(HttpTestingController);
});
it('requests by page and max-count', (done) => {
service
.getEntries(3, 5)
.subscribe((res: any) => {
done();
});
const request = httpMock.expectOne('api/operations-log/oplog.json?page=3&max-count=5');
request.flush({});
httpMock.verify();
});
it('provides entries', (done) => {
const entries = [
{
severity: Severity.Informational,
whenLogged: Date.now(),
code: 123,
message: 'msg'
}
];
service
.getEntries(3, 5)
.subscribe((res: any) => {
expect(res).toEqual(entries);
done();
});
// don't want to specify the URL here
const request = httpMock.expectOne('api/operations-log/oplog.json?page=3&max-count=5');
request.flush(entries);
httpMock.verify();
});
});
Почему я хочу эту возможность: тесты должны быть независимы друг от друга. Одна проблема / изменение должна привести к как можно меньшему количеству неудачных тестов. Если тест URL не пройден, я не хочу, чтобы другой тест (содержит записи) не прошел. Один из них предложил мне сохранить URL-адрес в общей переменной. Это устраняет дублирование кода, но тесты все еще слабы. Если произойдет сбой (из-за изменения URL-адреса), произойдет сбой обоих.