我试图动态编写一个mocha测试,而不是为res.body.result中的每个项目写一个期望。我有这样的json响应:
{
"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();
})
});
});
我如何迭代地进行此操作?
编辑:我尝试在describe语句中声明expectedMakes并将其声明。为简洁起见,这只是两者中的一个。
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 :(得分:0)
预期值位于测试中。一种方法是在测试中按预期存储所有makes
并断言
var expectedMakes = [
'Acura',
'Audi',
...
]
expect(res.body.result.makes).toEqual(expectedMakes)
这将断言列表严格相等,每个项目位于匹配位置expectedMakes