0
を使用してJSON配列を読み取ろうとするとき、私は次のようJSON
ペイロードを持っている:エラー万一、モカ、&Supertest
"app": {
"name": "myapp",
"version": "1.0.0",
"last_commit": {
"author_name": "Jon Snow"
"author_email": "[email protected]"
}
}
と、次の.js
ファイル(Mocha
、Supertest
とShould
を使用して):
var supertest = require('supertest')
var should = require('should')
var server = supertest.agent('http://localhost:3001')
describe('GET /', function() {
it('should respond with JSON', function (done) {
server
.get('/')
.set('Accept', 'application/json')
.expect('Content-Type', /json/)
.expect(200)
.end(function (err, res) {
var payload = res.body.app;
payload.should.have.property("app");
payload.should.have.property("name");
payload.should.have.property("version");
payload.should.have.property("last_commit");
payload.should.have.property("last_commit.author_name");
payload.should.have.property("last_commit.author_email");
done();
});
});
});
アプリをテストすると、次のエラーメッセージが表示されます。
Uncaught AssertionError: expected Object {
"name": "myapp",
"version": "1.0.0",
"last_commit": Object {
"author_name": "Jon Snow"
"author_email": "[email protected]"
}
} to have property 'last_commit.author_name'
これらの行にアサーションエラーが表示されるのはなぜですか?
payload.should.have.property("last_commit.author_name");
payload.should.have.property("last_commit.author_email");
もっと良い方法がありますか?子要素のn個の子要素を含むペイロードがある場合はどうなりますか? – TheAuzzieJesus
次に、アサーションで使用する前にプロパティ文字列をオブジェクト表現に変換する関数を抽出することができます。 – nilobarp