Я успешно провожу первый тест мокко, он должен выполнить итерацию по массиву matchIds и затем выполнить тест.
предположим, у меня есть 5 matchIds, затем мой тест выполняется 5 раз.
Я использовал (mocha-each) модуль.
Затем я пытаюсь выполнить l oop в этом тесте, чтобы выполнить его много раз (с помощью для l oop), для этого я должен получить параметр из принципал api (match / parts), то есть (partId), а другой полученный параметр - matchIds,
Но проблема в том, что при выполнении и итерации с moch-each у меня все время одинаковое значение matchIds и partIds, которые неверны.
как я могу решить эту проблему и использовать новые значения параметров, спасибо.
Код
const expect = require('expect');
const forEach = require('mocha-each');
const app = require('../app');
var MatchSchema = require('./Schema/MatchSchema');
let Match =module.exports = mongoose.model(MatchSchema.ModelName, MatchSchema.Schema);
var matchIds = [];
describe('POST /match/parts', () => {
for(var i = 0; i < 5; i++){
it('should get matchIds and partId to be used as params',(done) =>
{
request(app)
.post('/myApi')
.set({'Authorization': "my token"})
.send({"param1" : "250"})
.expect(200)
.expect((res) => {
//reinitialize array, in each loop, we should use new values
//array will be looped on
matchIds = [];
for(var i = 0; i < res.body.data.matchs.length; i++)
{
matchIds.push(res.body.data.matchs[i].MatchID)
}
//parts id will be used as param
partsId = res.body.data.partsID;
//the loop test is executed
describe('POST /match/play', () => {
matchIds.forEach(function(matchId) {
it('should play quiz', (done) =>
{
//Problem : these params (matchId and partId)
// are always the same after end of the first iteration of the loop for
Match.findOne({'MatchID': matchId}).then((result) => {
expect(result).not.toBeNull();
let response = result.Response
request(app)
.post('/match/play')
.set({'Authorization': "myToken"})
.send({
"partsID": partsId,
"matchId": matchId,
"response": response
})
.expect(200)
.expect((res) => {
expect(res.body.success).toBe(true);
expect(res.body.data).not.toBeNull();
}).
end((err) => {
if(err) return done(err);
done();
});
});
});
});
});
});
});
}).
end((err) => {
if(err) return done(err);
done();
});
});
}
});