Проверка длины массива при выполнении тестов - PullRequest
0 голосов
/ 22 апреля 2019

Я делаю тесты, мне нужно проверить количество предметов в моем объекте

Мой тест:

    describe('POST /api/products/:product_id', () => {
        it(`You should receive the product with at the price of 0 ... 1000`, (done) => {
            let operationCount = productForUser.length;
            for (let i = 0; i < productForUser.length; i++) {
                chai
                    .request(server)
                    .get(`/api/products/${productForUser[i]}`)
                    .set('token', constants.userToken)
                    .end((err, res) => {
                        operationCount--;
                        expect(res).have.status(200);
                        expect(res.body).have.property('message');
                        expect(res.body.message).to.be.equal('Product found');
                        expect(res.body).have.property('productDetails');
                        expect(res.body.productDetails).to.be.a('object');
                        expect(res.body.productDetails.length).to.deep.equal(22);
                        if (operationCount == 0) {
                            done();
                        }
                    });
            }
        });
    });

Что приходит мне в ответ

{
    "message": "Product found",
    "productDetails": {
        "product_id": 402,
        "product_name": "This is Another Bad Creation",
        "product_description": "ABC BBD the East Coast Family. Never skipped a bit while cooling on South Street. ",
        "original_price": 100,
        "sale_price": 1,
        "discount": 99,
        "creating_date": "2019-04-15T03:02:57.000Z",
        "end_date": "2019-04-25T04:00:00.000Z",
        "product_photos": [
            "https://...",
            "https://..."
        ],
        "quantity_available": 100,
        "store_id": 9,
        "categories": "Bags",
        "starting_date": "2019-04-24T23:00:00.000Z",
        "active": true,
        "merchant_name": "Silas",
        "contact_number": "+63 0927 9545228",
        "type_location": "Subic Bay Freeport",
        "likes": "0",
        "bookmarks": false,
        "is_liked": false
    }
}

Я продал, чтобы сделать это так, но я понял, что у объектов нет блинов.

expect(res.body).have.property('productDetails');
expect(res.body.productDetails).to.be.a('object');

Как проверить количество предметов в моем объекте?

Ответы [ 2 ]

1 голос
/ 22 апреля 2019

Используя Object.keys, вы можете сделать что-то вроде этого,

assert.equal(Object.keys(res.body.productDetails).length, 2);
1 голос
/ 22 апреля 2019

Вы можете использовать Object.keys , чтобы получить список ключей собственного свойства объекта и проверить его длину.

Object.keys(res.body.productDetails).length

...