Я собираюсь написать то, что я называю структурными ожиданиями, с помощью Jest, и я не уверен, как этого можно достичь.
Для начала у меня есть сервер Graphql и база данных с множеством элементов todo. В настоящее время у меня есть следующий тест, который просто возвращает true, если содержимое в базе данных совпадает с ответом, который я написал. Вместо этого я хочу проверить, что ответ выглядит как объект с данными, которые могут быть чем угодно.
Вот код, который у меня есть:
describe('To Do:', () => {
it('add todo items', async () => {
const response = await axios.post('http://localhost:5000/graphql', {
query: `
query {
getTodoItems {
message
id
dateCreated
dateDue
}
}
`
});
const { data } = response;
expect(data).toMatchObject({
data: {
getTodoItems: [
{
message: "message",
id: "5bd9aec8406e0a2170e04494",
dateCreated: "1540992712052",
dateDue: "1111111111"
},
{
message: "message",
id: "5bd9aeec60a9b2579882a308",
dateCreated: "1540992748028",
dateDue: "1111111111"
},
{
message: "new message",
id: "5bd9af15922b27236c91837c",
dateCreated: "1540992789836",
dateDue: "1111111111"
}
]
}
})
});
});
Теперь я хочу написать что-то вроде этого, где может быть любое количество возвращаемых элементов, и они следуют аналогичной структуре:
describe('To Do:', () => {
it('add todo items', async () => {
const response = await axios.post('http://localhost:5000/graphql', {
query: `
query {
getTodoItems {
message
id
dateCreated
dateDue
}
}
`
});
const { data } = response;
expect(data).toMatchObject({
data: {
getTodoItems: [
{
message: expect.any(String),
id: expect.any(String),
dateCreated: expect.any(String),
dateDue: expect.any(String)
} // There needs to be unlimited additional items here
]
}
})
});
});
Я просматривал документы и даже пытался воплотить ожидания, но, похоже, не могу получить желаемый ответ. Дайте мне знать, что вы думаете, или я могу уточнить каким-либо образом.