Наконец-то я добрался до ТТД! Тестирование отличное, но у меня есть проблема. Я тестирую функцию, которая выполняет HTTP-вызов, и получаю большой объект JSON со свойством result
. result
— это массив объектов, он выглядит примерно так:
{
itemsPerPage: 2,
numPages:1,
offset:0,
actualPage:1,
firstPostingOnPage:1,
lastPostingOnPage:2,
totalNumberOfJobs:2,
result: [
{
jobPostingId:1,
postingVersionId:1,
title: 'first job',
applyOnlineLink: 'some link',
config: null,
jobStartDate: 1234567890,
postingVersionStartDate:1234567890,
postingVersionEndDate:1234567890
}
]
};
result
может иметь любую длину, но не нулевую. Я хочу проверить структуру объектов в результате. В моем приложении у меня есть следующий тест:
it('The object array should have an object that contains keys "jobPostingId, postingVersionId, title" ', () => {
let result:Observable<any> = sut.getJobs();
return result.subscribe((content:any) => {
assertThat(content, hasProperty('result',
containsInAnyOrder({
'jobPostingId': is(number()),
'postingVersionId': is(number()),
'title': is(string()),
'applyOnlineLink': is(string()),
'config': is(falsy()),
'jobStartDate': is(number()),
'postingVersionStartDate': is(number()),
'postingVersionEndDate': is(number())
})
));
});
});
Это не удается, поскольку я получаю сообщение об ошибке
Expected: an object with {result: [{"jobPostingId":{},"postingVersionId":{},"title":{},"applyOnlineLink":{},"config":{},"jobStartDate":{},"postingVersionStartDate":{},"postingVersionEndDate":{}}] in any order}
[2] but: result no item in [{"jobPostingId":1,"postingVersionId":1,"title":"first job","applyOnlineLink":"some link","config":null,"jobStartDate":1234567890,"postingVersionStartDate":1234567890,"postingVersionEndDate":1234567890}, {"jobPostingId":2,"postingVersionId":1,"title":"second job","applyOnlineLink":"some link","config":null,"jobStartDate":1234567890,"postingVersionStartDate":1234567890,"postingVersionEndDate":1234567890}] matches: {"jobPostingId":{},"postingVersionId":{},"title":{},"applyOnlineLink":{},"config":{},"jobStartDate":{},"postingVersionStartDate":{},"postingVersionEndDate":{}}
Я явно делаю что-то не так, почему он ожидает объект после каждого свойства в объекте из массива объектов.
Заранее спасибо, извините, если задал глупый вопрос.