2016-06-28 4 views
0

Я пытаюсь написать тест мокки динамически, вместо того, чтобы писать ожидание для каждого элемента в res.body.result. У меня есть ответ JSON как это:Как написать тест mocha с массивом результатов?

{ 
    "ok": true, 
    "result": { 
    "year": "2000", 
    "makes": [ 
     "Acura", 
     "Audi", 
     "BMW" 
    ] 
    } 
} 

и вместо того, чтобы писать это для каждой из марок:

describe('Decode VIN', function(){ 
    it('should return 200 response', function (done){ 
     api.get('/makes_year?year=2000') 
      .set('Accept', 'application.json') 
      .expect(200) 
      .end(function(err, res) { 
       expect(res.body.ok).to.equal(true) 
       expect(res.body.result.year).to.equal("2000") 
       expect(res.body.result.makes).to.equal("Acura") 
       expect(res.body.result.makes).to.equal("Audi") 
       done(); 
      }) 
    }); 
}); 

Как я могу сделать это итеративно?

Редактировать: Я пробовал объявлять ожидаемые модели внутри описания описания и из. Для краткости это только одна из двух.

var expectedMakes = [ 
    "Acura", 
    "Audi", 
    "BMW" 
]; 

describe('Makes By Year', function(){ 
    it('should return 200 response, body.ok, and an array of vehicle makes', function (done){ 
     api.get('/makes_year?year=2000') 
      .set('Accept', 'application.json') 
      .expect(200) 
      .end(function(err, res) { 
       expect(res.body.ok).to.equal(true) 
       expect(res.body.result.year).to.equal("2000") 
       expect(res.body.result.makes).to.equal(expectedMakes) 
       done(); 
      }) 
    }); 
}); 

Я получаю этот результат:

Uncaught AssertionError: expected [ Array(37) ] to equal [ Array(37) ] 
    + expected - actual 

ответ

0

Ожидаемые значения находятся в тесте. Одним из способов может быть хранить все makes, как ожидается, в тесте и утверждают

var expectedMakes = [ 
    'Acura', 
    'Audi', 
    ... 
] 
expect(res.body.result.makes).toEqual(expectedMakes) 

Что будет утверждать, что списки строго равны друг элемент, находясь в месте согласования с expectedMakes

+0

Я попытался объявить массив делает внутри описания и вне его. Он терпит неудачу, есть ли другой способ, которым я должен это делать? –