В моем Angular-компоненте есть участки кода, которые выглядят следующим образом:
for (const item of items) {
const boxItems = item.boxItems;
if (await self.hasID(boxItems)) {
// perform some logic
}
}
private async hasID(boxItems: BoxItems[]): Promise<boolean> {
for (const item of boxItems) {
let info = (await item.promise).json();
// test fails here, info remains undefined
// how to properly mock a Response object from a Promise at this point?
}
}
Поскольку я использую .json()
, исходя из здесь , мне было любопытно, как я смогу смоделировать это в моем модульном тесте?
Я сейчас занимаюсь этим:
const MockBoxItem = {
promise: new Promise<any>((resolve, reject) => resolve(myData))
};
Должен ли я вместо этого делать что-то вроде:
const MockBoxItem = {
promise: new Promise<any>((resolve, reject) => resolve(
new Response(new Body([JSON.stringify(myData)]))
)
};
Мой модульный тест не пройден, так как я подозреваю, что возвращаемые мной макетные данные неправильно реализуют объект Response
, поэтому не содержат метод .json()
.
Когда я проверяю этот поток локально, возвращаемый ответ выглядит так:
promise: ZoneAwarePromise
_zone_symbol_state: true
_zone_symbol_value: Response
headers: ...
ok: ...
status: ...
statusText: ...
type: ...
url: ...
_body: myData
Спасибо