У меня есть объект как структура ниже для ответа API.
{
"status": true,
"message": "Successfully fetch all items!",
"data": {
"services": [
{
"id": "E",
"name": null,
"price": 50,
"discount_per": 2
}
],
"combos": [
{
"id": "w",
"name": "3 Times Oil change, 4 Itmes Car Wash",
"price": 5000,
"discount_per": 10,
"start_date": null,
"expiry_date": "2020-02-04T12:00:00.000Z"
}
]
}
}
Мне нужно написать модульный тест для этой структуры.
Здесь, если нет данных , данные будут {}
.
ключей services
и combos
не будет, если внутри них нет данных, также они всегда будут массивом объектов
Это то, что я пробовал.
const expect = require('chai').expect
const request = require('supertest')
const _ = require('lodash')
const app = require('../../src/app')
describe('GET /api/v1/items', function () {
it('OK, Got items successfully', async () => {
const result = await request(app)
.get('/api/v1/items')
.set('Accept', 'application/json')
.expect('Content-Type', /json/)
.expect(200)
expect(result)
.to.be.a('Object')
expect(result.body.status, "status should be a boolean and true")
.to.be.a('Boolean').true
expect(result.body.data, "data should be an Object and every key should an Array")
.to.satisfy(data => {
if(!_.isEmpty(data)) {
expect(data).to.have.any.keys('services', 'combos')
_.forOwn(data, (value, key) => {
expect(data[key]).to.be.a('Array')
})
}
})
})
})
Но я получаю ошибку ниже.
1) GET / api / v1 / items
OK, элементы получены успешно:
AssertionError: данные должны быть Объект и каждый ключ должны Array: ожидаемый {Object (services, combos)}, чтобы удовлетворить [Function]
в Context. (test \ items \ getAllItems. js: 20: 17)
в processTicksAndRejection (внутренний / process / task_queues. js: 94: 5)