Mocha: запустить набор тестовых случаев для нескольких объектов JSON в массиве.Нужен правильный подход - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть массив, который содержит более одного объекта JSON, поэтому для запуска набора тестовых случаев для каждого объекта JSON я должен поместить «foreach» внутри каждого тестового случая.Я уверен, что это неправильный способ сделать это, потому что, когда число моих тестовых примеров увеличится, это будет неэффективно.Я посмотрел на пару других вопросов, но все они не увенчались успехом в этом случае.Может кто-нибудь предложить мне правильный способ подойти к этому.

 let responseData;    
    before((done)=>
        {
            promiseResp.then((data) => {
                responseData =data;
                done();
            }, (err) => {
                console.log('promiseResp.err', err);
                process.exit(1);
            })

        })
        describe('AC 1', ()=>
        {
                        it('Test1', ()=>
                        {
                            responseData.forEach(responseData=>
                            {
                                expect(responseData.abc).not.toBe(responseData.abc);
                            })

                        });

                        it('Test 2', ()=>
                        {
                            responseData.forEach(responseData=>
                            {
                                expect(responseData.abc).not.toBe(responseData.abc);
                            })

                        });

                        it('Test 3', ()=>
                        {
                            responseData.forEach(responseData=>
                            {
                                expect(responseData.xyz).toMatch(/[*xyz]/);
                            })
                        });

                        it('Test 4', ()=>
                        {
                            responseData.forEach(responseData=>
                            {
                                for (let i = 0; i < responseData.pqr.length; ++i)
                                {
                                    expect(responseData.pqr).toBeFalsy();
                                }
                            })
                        });

            after(()=>
            {
                process.exit(0);
            });
        });

1 Ответ

0 голосов
/ 03 декабря 2018

Я думаю, для ясности, то, как вы это сделали, просто прекрасно.Суть тестов состоит не в том, чтобы оптимизировать их для повышения производительности, а в том, чтобы выделить конкретные тестовые случаи и четко определить, когда они не пройдут.

Вы можете сократить количество итераций на вашем responseData, если выполните всеваши проверки за одну итерацию, но я понимаю, что вы жертвуете ясностью в том, что не получается, потому что теперь вы будете тестировать 2 условия за один проход, а не 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...