В моем тесте мне нужен файл .json с данными, которые я проверю. Тем не менее, я не могу передать строку, где найти его в требовании ...
Рабочий код
const data = require('../../../assets/data.json');
Не работает
const jsonUrl = '../../../assets/data.json';
const data = require(jsonUrl);
Я хочу использовать переменную jsonUrl
, так как эта строка URL-адреса будет использоваться несколько раз в самом тесте. Я просто не понимаю, почему он не может его найти?
Поправка к вопросу:
Так как насмешка - это путь, и я не знаю точно, как это сделать ... Я поправляю вопрос, чтобы помочь с этим.
Исходя из того, что я думаю о тестировании, я предполагаю, что мне нужно прочитать данные, которые я на самом деле использую, а затем протестировать их. Если я ошибаюсь, поправьте меня.
Вот что я тестирую ...
data.json
[
{
"name": "one",
"id": 1,
},
...
// This format is used for approx 20 entries
]
component.ts
ngOnInit() {
loadData().subscribe(data => {
this.data = data;
};
}
loadData() {
const statusUrl = '../../../assets/data.json';
return this.httpClient.get(statusUrl);
}
test.ts Получающему не удается найти модуль из-за указанной выше проблемы.
it('should load status data from local json', fakeAsync(() => {
const jsonUrl = '../../../assets/status.json';
const data = require(jsonUrl);
const request = httpMock.expectOne(jsonUrl);
request.flush(data);
expect(component.status).toEqual(data);
}));