Я пытаюсь построить тест, который будет проверять сообщение об ошибке, полученное для плохого запроса к API. Я использую node-jasmine и frisby для записи тестов, но имею проблемы с доступом к значениям JSON с точечной нотацией.Доступ к значениям JSON с помощью jasmine-node/frisby
var frisby = require('frisby');
frisby.create('JSON Error')
.put('url', {
}, {json: true})
.expectStatus(400)
.expectHeaderContains('content-type', 'application/json')
.auth('username', 'password')
.afterJSON(function (body) {
//changed values
expect(body.error.newEmail).toMatch('missing-required-key'),
expect(body.error.oldEmail).toMatch('missing-required-key')
})
.toss();
Ожидаемый ответ JSON тело
{
"error": {
"newEmail": "missing-required-key",
"oldEmail": "missing-required-key"
}
}
Результаты тестов в следующей ошибки:
Cannot read property newEmail of undefined
я написал подобный тест в Почтальон, который работает, я пытаюсь преобразовать эти тесты в то, что может быть использовано node.js.
Почтальон рабочий пример:
var body = JSON.parse(responseBody);
//error messages
var newEmailError = body.error.newEmail;
var oldEmailError = body.error.oldEmail;
tests["New Email Error Message"] = newEmailError === "missing-required-key";
tests["Old Email Error Message"] = oldEmailError === "missing-required-key";
Спасибо за этот фрагмент кода, который может обеспечить некоторую ограниченную краткосрочную помощь. Правильное объяснение [значительно улучшило бы] (// meta.stackexchange.com/q/114762) его долгосрочную ценность, показав * почему * это хорошее решение проблемы и сделало бы его более полезным для будущих читателей с другие, подобные вопросы. Пожалуйста, отредактируйте свой ответ, чтобы добавить какое-то объяснение, включая сделанные вами предположения. –